java 类继承
一、继承的概念
将已有的功能加以扩展,实现代码的重复使用
现有类成为父类、基类 ,衍生出的类称为子类、衍生类
java只允许单一继承,要实现多重继承,需要借助于接口。
二、继承关系
父类 子类
扫描二维码关注公众号,回复:
835339 查看本文章
成员函数或变量 可继承,public protected 类型的成员可以直接在子类内访问,private类型成员,只能借助父类函数访问
构造函数 不可继承
设定终止继承的成员 不可继承,在父类的方法之前加上final关键字,子类方法不能覆盖。
三、构造函数的调用顺序
原则:首先调用父类的构造函数,若父类有多个构造函数,默认调用没有参数的构造函数,如果没有无参的构造函数则必须使用super来指定需要调用的构造函数 ,可以使用super()重载,根据参数的不同选择需要调用的构造函数,super()必须放在第一行执行。
构造函数内使用this() 和super()
1、this()来调用同一类内的其他构造函数,必须放在第一行
2、super()从子类的构造函数调用其父类的构造函数,必须放在第一行。
四、覆盖
子类可以重写父类的成员,以覆盖父类成员,要访问父类成员可以使用super.成员
五、终止继承
使用final关键字
对类使用,该类不允许有子类
对成员函数,该成员函数不允许被重写
对成员变量,该成员变量不允许被修改
六、举例
package com; public class JavaHello { public static void main(String ar[]) { //由于子类构造函数中super(4),首先调用父类有参数的构造函数, 然后调用子类构造函数 CChild cb = new CChild(); //调用父类无参数的构造函数 CFather cba = new CFather(); cb.play(); cb.setColor(4); cba.setColor(2); System.out.println(cb.getColor() + cb.style); System.out.println(cba.getColor()); } } //父类 class CFather{ private int color; protected int style; public CFather(){ System.out.println("父类构造无参"); } public CFather(int h){ System.out.println("父类构造有参"); } public void play(){ System.out.println("CBall play"); } public void setColor(int color) { this.color = color; } public int getColor() { return color; }; } //子类 class CChild extends CFather{ //覆盖父类成员变量 public int color; public CChild(){ super(4); System.out.println("子类构造"); this.style = 5; this.play(); } }
执行结果:
父类构造有参 子类构造 CBall play 父类构造无参 CBall play 9 2