为什么要有继承?(inheritance)
多个类中存在相同属性和行为时,将这些内容抽取到 单独一个类中,
那么多个类无需再定义这些属性和行为,只要继承单独的那个类即可。
定义继承:
此处的多个类称为子类,单独的这个类称为父类(基类或超类)。
类继承语法规则:
通过extends 关键字让类与类之间产生继承关系。
class SubDemo extends Demo{}
即子类不是父类的子集,而是对父类的“扩展”。
作用:
1-继承的出现提高了代码的复用性。
2-继承的出现让类与类之间产生了关系,提供了多态的前提。
3-子类继承了父类,就继承了父类的方法和属性。
子类可以直接访问父类中的非私有的属性和行为。
在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法(重写)。
注意:
1-不要仅为了获取其他类中某个功能而去继承
2-类与类之间要有所属( " is a " )关系,xx1是xx2的一种
3-两个类有共性可以抽取为类
特点:
1-Java只支持单继承,不支持多继承。
一个类只能有一个父类,不可以有多个父类。
class SubDemo extends Demo{} //ok
class SubDemo extends Demo1,Demo2...//error
因为多继承容易带来安全隐患:当多个父类中定义了相同功能,
当功能内容不同时,子类对象不确定要运行哪一个。
但是java保留这种机制。并用另一种体现形式来完成表示。多实现。
2-Java支持多层继承(继承体系)
class A{}
class B extends A{}
class C extends B{}
1-如何使用一个继承体系中的功能呢?
1-想要使用体系,先查阅体系父类的描述,
因为父类中定义的是该体系中共性功能。
2-通过了解共性功能,就可以知道该体系的基本功能。
3-那么这个体系已经可以基本使用了。
2-那么在具体调用时,要创建最子类的对象,为什么呢?
1-因为有可能父类不能创建对象,如抽象类、接口
2-创建子类对象可以使用更多的功能,包括基本的也包括特有的。
总结:查阅父类功能,创建子类对象使用功能。 |