Java三大特性之继承

1.继承概述


package cn;

publicclass Student {

private String name;

privateintage;

public String getName() {

returnname;

}

publicvoid setName(String name) {

this.name = name;

}

publicint getAge() {

returnage;

}

publicvoid setAge(intage) {

this.age = age;

}

@Override

public String toString() {

return"Student [name=" + name + ", age=" + age + "]";

}

}


package cn;

publicclass Teacher {

private String name;

privateintage;

public String getName() {

returnname;

}

publicvoid setName(String name) {

this.name = name;

}

publicint getAge() {

returnage;

}

publicvoid setAge(intage) {

this.age = age;

}

@Override

public String toString() {

return"Teacher [name=" + name + ", age=" + age + "]";

}

}

通过上面的代码,我们可以看出学生类和老师类中都有相同的成员变量和成员方法,这样代码的重复度很高。而且,可以还有许多类似的类,比如:工人类,军人类等。这样写代码的代码量非常大,而且将来维护起来非常麻烦。所以,我们就思考:能不能把相同的成员变量和成员方法定义到同一个类中,让多个类和这个类产生关系呢?这多个类就具备了这个独立类的成员变量和成员方法,那该有多好啊?Java提供了继承,来满足我们的需求。

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类中无需再定义这些属性和行为,只要继承那个类即可。

通过extends关键字可以实现类与类的继承,class 子类名 extends 父类名{}。

父类,又可以成为基类或超类;子类,又称为派生类。

有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的继承上,定义自己的新成员。


package cn;

publicclass Person {

private String name;

privateintage;

public String getName() {

returnname;

}

publicvoid setName(String name) {

this.name = name;

}

publicint getAge() {

returnage;

}

publicvoid setAge(intage) {

this.age = age;

}

@Override

public String toString() {

return"Person [name=" + name + ", age=" + age + "]";

}

}

package cn;

publicclass Student extends Person{}

package cn;

publicclass Teacher extends Person{}

2.继承的好处

2.1提高了代码的复用性 多个类相同的成员变量和成员方法可以放到同一个类中。

2.2提高了代码的维护性 如果功能的代码需要修改,修改一处即可。

2.3让类与类之间产生了关系,是多态的前提 但是这也是继承的一个弊端:类之间的耦合性很强。

3.软件的设计原则

高内聚,低耦合。

内聚:就是自己完成某件事情的能力;耦合就是类与类之间的关系。

我们在设计的时候的原则就是:自己能完成的就不麻烦别人,这样将来别人产生了修改,就对我的影响较小。

4.Java中继承的特点

4.1Java只支持单继承,不支持多继承。

一个类只能有一个父类,不可以有多个父类。

classSubDemo extends Demo{}//正确

classSubDemo extends Demo1,Demo2{}//错误

4.2Java支持多层继承

classA{}

classB extends A{}

classC extends B{}

5.Java中继承的注意事项

子类只能继承父类所有非私有的成员(成员方法和成员变量)。其实,这也是继承的另一个弊端,打破了封装性。

子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。

我们什么时候使用继承呢?继承中类之间体现的是:“is a”的关系。例如:水果和苹果,苹果是一种水果。学生和人,学生是人的一种。

6.super关键字

6.1super的用法和this很像

this表示本类对象的默认引用

super表示父类存储空间的标志

6.2用法

访问成员变量

this.成员变量

super.成员变量

访问构造方法

this(...)

super(...)

访问成员方法

this.成员方法();

super.成员方法();

7.继承中构造方法的关系

子类中所有的构造方法默认都会调用父类的无参构造方法。

why?因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。

如果父类中没有构造方法,那该怎么办呢?

子类可以通过super去显示调用父类其他的带参的构造方法

子类可以通过this去调用本类的其他构造方法,当然本类其他构造也必须首先访问父类构造。

一定注意:this(...)或super(...)必须出现在第一条语句

8.方法重写概述

子类中出现了和父类中一模一样的方法声明,也称为方法覆盖,方法复写。

使用特点:如果方法名不同,就调对应的方法。如果方法名相同,最终使用的是子类自己的。

方法重写应用:当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类中的方法,这样,既沿袭了父类的功能,又定义了子类特有的内容。

方法重写的注意事项:1.父类中私有方法不能被重写2.子类重写父类方法时,访问权限不能更低

时间: 2024-10-11 15:05:56

Java三大特性之继承的相关文章

浅谈Java三大特性之继承

前言 简单用伪代码去介绍一些 父类与子类的构造函数问题 others 前言 类的继承性是面向对象语言的基本特性,多态性前提是继承性.Java 支持继承性和多态性.——Java从小白到大牛 继承:三大特性之一,关键词:extends 简单用伪代码去介绍一些 假设需要定义个student类 public class Student{    private String name;//名字    private int age;//年龄    private int sex;//性别} 再来个需求,需

java三大特性之一继承

继承 众所周知,java是跨平台,健壮性的语言 他拥有封装,继承,多态三大特性 继承: 首先,子类继承父类之后,子类可以拥有父类的的方法,构造方法不能被继承 使用场景: 如果我们定义好几个类,每个类都拥有相同的方法或者参数, 然后我们就可以抽取相同的内容为父类,然后子类继承父类的参数或者方法,极大的提高了 代码的复用性,减少了我们的工作量 范例: public class Demo { public static void main(String[] args) { teacher t = ne

2.Java三大特性之继承

在<Think in Java>中有这样一句话:复用代码是java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复用代码并对其加以改变是不够的,他还必须能够做更多的事情.复用代码是我们一直所追求的,而继承则是复用代码的一种方式. 继承的定义:继承是用已有的类(称之为父类或超类)作为基础建立新类(子类),子类可以定义新的功能或增加新的数据,子类拥有父类的全部定义.使用继承我们可以很方便的复用已有的代码.继承所描述的是"is-a"的关系,有两个对象猫.动物,这两个

【转】java提高篇(二)-----理解java的三大特性之继承

[转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句话中最引人注目的是"复用代码",尽可能的复用代码使我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是java三大

java随笔:三大特性之继承

Java三大特性之继承 一.介绍 笔记重点:构造器.protected关键字(这个自行查阅).向上转型.private关键字(继承非常重要的要点)  复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句话中最引人注目的是"复用代码",尽可能的复用代码使我们程序员一直在追求的. 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继

Java三大特征之继承(二)

在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句话中最引人注目的是“复用代码”,尽可能的复用代码使我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是java三大特性之一---继承. 在讲解之前先看一个例子:这个例子还是上一篇博文[Java三大特征之封装(一)]中的. 从这里我们可以看出,Wife.Husband两个类除了各自的husband.wi

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

java基础篇(二) ----- java面向对象的三大特性之继承

java面向对象的三大特性之继承: 复用代码是java众多引人注目的功能之一,但是想要成为极具革命性的语言,仅仅是复制代码并对其加以改变是不够的.它必须能够做更多的事.引自<Think in java>    而代码复用也是程序员一直不断追求的.由此来说下代码复用的一种方式 java面向对象的三大特性--继承!! 在面向对象程序设计中,继承机制可以有效地组织类的结构.确定类之间的关系,在已有类的基础上开发新的类.继承机制在程序代码复用.提高软件开发效率.降低软件系统维护成本等方面具有重要作用.

Java入门——深入理解Java三大特性

Java入门——深入理解Java三大特性 本Blog内容: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法(getter,setter),如果不想被外界方法,我们大可不必提供方法给外界访问. 封装确实可以使我们容易地修改类的内部实现,而无需修改使用了该类的客户代码. 可以对成员变量进行更精确的控制.(在setter方法中进行实际意义的校验) 总结:控制属性访问权限,不是你想改就能改.容易修改属性类型.精确控制属性的取值范围. 继承 继承是使用已存在的类