前言
- 类是对对象的抽象,具有共同属性和行为的许多对象抽象出一个类。
- 例如:有三个学生小明,小红,小李都有姓名,年龄,身高,体重,都会吃,睡,学习等等,我们可以将这些属性和行为抽象出来成为一个类,也就是人类。
- 假设多个类存在相同属性和行为时,我们同样可以将这些内容抽取到单独的一个类中,那么这多个类没有必要再定义这些属性和行为,只需要继承这个单独的类就好了,这就是继承。
- 总结:类是对对象的抽象,继承是对某一批类的抽象。
继承的格式:
格式
- 通过extends关键字可以实现类与类的继承。
- class 子类类名 extends 父类类名 {}
- 被继承的这个类称为父类,基类或者超类。
- 继承的这个类称为子类或者派生类。
//父类
class Fu{}
//子类
class Zi extends Fu{}
类与类之间有两种格式。
一种是(is a)属于继承;
另一种是(has a)属于组合;
继承的特点
- 通过extends关键字,实现了继承之后,让类与类之间产生了关系。
- 继承的本质就是抽取共性代码,多个重复代码的向上抽取,简化代码。
- 类是对一批对象的抽象,继承是对一批类的抽象。
- 父类又被称为超类,或者基类,子类又被称为派生类。
- Java是面向对象语言,万事万物皆是对象,为了满足这个设计原则,所有的类都直接或者间接继承自Object类。
继承的优缺点
优点:
- 简化了代码。
- 提高了扩展性。
- 提高了可维护性。
缺点:
造成了耦合性过高,牵一发动全身。
编写Java程序时一般要满足开闭原则。即:对扩展开放,对修改关闭;
高内聚,低耦合: 类与类之间,功能与功能之间,模块与模块之间,功能尽量内聚,不同模块之间,尽量独立
继承的注意点(重要)
先总结再详解
- 单一继承性。(在Java中是不支持多继承的,通俗的说子类只能有一个父类,而父类可以有很多子类)。
- 支持多层继承。(继承可以一直传下去,子类有父类,父类又有父类…)。
- 如果父类成员使用private修饰,那么子类不能被继承。(private只是对本类有效)。
- 如果一个子类继承了父类的属性和方法还可以有自己特有的属性和方法。(不光有父类的属性(可继承的)和方法(可继承的),也有自己独有的属性和方法)。
- 当子类和父类的成员变量重名的时候,子类优先。(就近原则)
class Fu {
String name = "x";
int age = 40;
public Fu(){}
}
class Zi extends Fu {
int age = 10;
public Zi(){}
public void print() {
System.out.println(age);
}
}
结果为10;
- 构造方法不能够被继承(构造方法必须要与类名保持一致)。
继承的使用
- 一般在写代码的时候发现代码中存在重复代码,需要向上抽取,考虑继承。
- 当某个类的设计非常复杂的时候可以考虑继承 例如: 设计一个窗口类。
(继承是一把双刃剑,要慎用!)
以上