继承是多态的前提,如果没有继承就没有多态。继承主要就是共性抽取的问题,使类与类之间产生关联,提高代码的复用性。
继承关系中的特点:
1、子类可以拥有父类的内容
2、子类还可以拥有自己特有的内容
3、java中继承可以使多层继承:class A{ } class B extends A { }
class C extends B{ }
继承的关系是is-a的关系。例如父类是员工,子类是讲师,讲师就是一个员工这就是is-a的关系。
继承的格式 权限修饰符 class 子类名称 extends 父类名称{………………}
在父子类的继承关系中,如果成员变量重名,则创建谁的对象就有限用谁,假如没有才会从父类里找。
super和this
super只能在子类中使用,子类可以通过super访问父类的变量和方法,this则是代表子类。如果子类在构造方法中使用super(),则必须将super()放在首行。
不放首行可以看到,报错。
super也可以用在当子类中成员变量和父类的成员变量重名时,使用。例如父类中有个变量叫age,子类中也有。就用super.age来区分它们。假如子类中不存在age,那么语句super.age; age; this.sge;三个的含义是等价的。
方法的重写(覆盖)
当子类中出现父类中一模一样的方法时(子类访问权限修饰符大于等于父类访问权限修饰符(不包括private)时 方法名、参数列表都相同),此时需要覆盖重写。覆盖重写可以在父类方法的基础上加上属于自己特色东西。注:静态方法只能覆盖静态。父类中私有方法对外不可见,因此不可被覆盖重写。
父类中的方法:
子类中覆盖重写的方法:
旁边的标识标志着这是一个方法的覆盖重写。
重写和重载的区别:重写是指在子父类的继承关系当中,子类中存在和父类一模一样(访问修饰符可以不同,子类大于等于父类)的方法。而重载是在本类中方法名相同,参数列表不同(与方法返回值类型无关)的形式叫做重载。
子类中构造方法若调用了super(),那么在代码运行时,会首先回到父类将父类中的构造方法初始化。super中参数不同所指示的构造方法也不相同。this()调用本类其他的构造方法。



