继承
图1.代码冗余
图2.代码归类
特点:
1.利于代码复用
2.缩短开发周期
内涵:
1.一种类与类之间的关系
2.使用已存在的类的定义作为基础建立新类
3.新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类
4.父类---基类、子类---派生类
关系:
满足“A is a B”的关系就可以形成继承关系
reg:猫、狗是动物---》猫、狗继承自动物
学生、老师是人---》学生、老师继承于人
实现 :
图3.继承的实现
重写规则:
返回值类型、方法名、参数类型、顺序、个数都要与父类继承的方法相同。
方法重写&方法重载
图4.重写与重载的对比
方法重写存在,属性重写不存在。
访问修饰符:
1. 公有的:public
2. 私有的:private
3. 受保护的:protected
4. 默认
访问修饰符代表成员调用范围
图5.
访问修饰符代表成员调用范围
super: 区分被调用者是来自父类的成员。
子类访问父类成员
方法:super.print();
属性:super.name;
构造方法:super();
实例化顺序
图6.继承类实例化顺序
继承实例化的规则
1.子类的构造的过程中必须调用其父类的构造方法。
2.如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类无参的构造方法。
3.如果子类构造方法中既没有显式调用父类的构造方法,而父类又没有无参的构造方法,则编译出错。
4.使用super调用父类指定构造方法,必须在子类的构造方法的第一行。
super&this
各自的访问权限
图7.访问权限
注意!!:构造方法调用时,super和this不能同时出现