一.面向对象的特征:继承性
-
好处
①.减少了代码的冗余,提高了代码的复用性
②.更好的扩展性
③.为多态性的使用提供了前提 -
为什么要有继承
多个类中存在相同属性或行为时,将这些内容抽取到一个单独类中,那么多个类无需在定义这些属性和行为,只要继承那个类即可。
①.多个类称为子类,单独的这个类称为父类(基类或超类)
子类 is a 父类
②.类继承语法规则
class Subclass extends Superclass{ }
③.作用
继承的出现提高了代码的复用性
继承的出现让类与类之间产生了关系,提供了多态的前提
不要仅为了获取其他类中某个功能而去继承 -
类的继承
①.被继承的类叫超类superclass,继承超类的类叫子类subclass
②.创建类
[abstract final] class SubCls extends SubCls{
SubClsBody
}
③.子类中可以访问超类继承下来的三种访问权限设定的成员
.public;.protected;.缺省
同一个包含只有pivate不能继承,不同包内public和protected修饰符可以被继承 -
类Person成员
成员变量:name、sex、birthfay
成员方法:setData(String、char、Data) -
类Student成员
成员变量:name、sex、birthday、stulD、specialty
成员方法:setData(String、char、Data、String、String) -
单继承举例
①.继承:用已有类派生新类的过程;父类超过子类
②.代码复用:继承父类成员,子类可以扩展自己的成员
二.Super关键字
-
指定操作
①.用于访问 父类中定义的属性
②.用于调用父类中定义的成员方法
③.用于在子类构造器中调用父类的构造器 -
当子父类出现同名成员时,可以用Super区分,追溯不仅限于直接父类
三.调用父类的构造器
- 子类中所有的构造器默认都会访问父类中空参数的构造器
- 当父类中没有空参数的构造器时,子类的构造器必须通过this或super语句指定调用本类或父类中相应的构造器,且必须放首行
- 如果子类构造器中即未显示调用父类或本类的构造器,且父类中又没有无参的构造器,则编译错误
- this和super的区别
四.其他关系
-
依赖关系
在一个类的方法中操作另一个对象,则称其依赖于第二个类 -
关联关系
一个类中使用另一个类的对象作为该类的成员变量 -
聚合关系
一个类(整体)由多个其他类的对象(部分)作为该类的成员变量,整体与部分之间时可以分离的,都可以具有各自的生命周期 -
组成关系
比聚合关系要求更高的一种关系,但在组成关系中整体与部分是不可分离的