继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承:子类继承父类,父类也叫基类、超类;
子类从父类继承过来所用的成员(成员属性、成员方法);
作用:
1、类是对对象的抽象,继承是对某一批类的抽象,从而实现对显示世界更好的建模;
2、通过继承可以简化类的定义,提高代码的复用性;
3、父类修改了属性,子类自动的获得修改;
语法:public class 子类名 extends 父类名;extands的意思是“扩展”。子类是父类的扩展
如果一个类没有表示继承哪个类,默认继承Object类;
如果子类里有和父类同名的成员变量;使用this和super来分别表示;
在每个普通的方法中,都包含两个隐式参数:this , super;
调用成员方法:
1、子类里如果没有定义这个方法,就调用从父类继承过来的;
2、子类如果重写了父类的方法,就调用子类重写过的;
3、子类特用的方法;
子类继承父类的成员变量和成员方法,但构造方法不能继承:
在java中,一个类只能继承一个(直接)父类,不能有多继承,但可以多层继承(通过接口实现);
多继承:
优点:子类同时拥有多个父类的属性和方法;
缺点:当多个父类中用同名的属性或方法,子类引用时会产生歧义;
从代码的重用的角度来看,组合完全可以替代继承,组合比继承更加灵活;
继承条件下,代码块和构造方法的执行顺序:
父类静态代码块 -> 子类静态代码块 -> 父类非静态代码块和构造方法 -> 子类非静态代码块和构造方法。
继承的语义:
“is a”:是一种;子类是父类的一种;
例:Dog extends Animal : Dog是一种Animal类型的对象;