当多个类中存在相同属性和行为时,同时满足is-a的关系时,可以将这些内容抽取到一个单独的父类中,那么这些类无须再定义这些属性和行为,只需要继承父类即可,把这些继承父类的类称之为子类。 初始化子类对象时先初始化从父类继承过来的属性,因此在创建子类对象时会隐式或显式的调用父类构造函数。
继承的特点:
(1)java通过继承实现了代码的复用,被继承的类叫父类(或基类),由父类派生出的类叫子类。
(2)Java中的类都是单继承,即一个类只能有一个直接基类,一个父类可以有很多子类,所有类都是java.lang.Object类的直接或间接子类。
(3)子类继承父类的成员变量和成员方法,同时修改父类的成员变量或重写父类的方法,还可以添加新的成员变量和成员方法。如在JavaTeacher类及DotNetTeacher类中重写Teacher父类中的giveLesson()方法。
(4)子类的每个对象也是其父类的对象,这是继承的is-a关系。如JavaTeacher实例化的对象,既是JavaTeacher类的对象,也是Teacher类的对象。
(5)父类的对象不一定是它的子类的对象。如Teacher对象不一定是JavaTeacher类对象,因为教师不一定是Java教师。(www.daowen.com)
(6)Java程序中实例化子类对象时,会在执行子类的构造方法之前,先调用父类的构造方法,其目的是对继承自父类的成员进行初始化操作,可以使用super([参数列表])中的参数个数及类型确定调用父类中的哪个构造方法,若在子类构造方法中没有出现super([参数列表])调用形式,则一定调用父类的无参构造方法,此时若父类中没有无参构造方法,则编译时会报错。
(7)构造方法不能被子类继承,但可以使用super([参数列表])被子类调用。
(8)调用父类构造方法的super([参数列表])语句行必须写在子类构造方法的第一行,否则编译时将报错。
(9)super()与this()在使用时,要求必须出现在构造方法内的第一行,因此super()和this()不能同时存在于同一个构造方法内。
(10)super关键字表示父类对象,同this关键字一样不能在static环境中使用,如静态方法和静态代码块。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。