java 类继承
一、继承的概念
将已有的功能加以扩展,实现代码的重复使用
父类、基类 ,衍生出的类称为子类、衍生类
java只允许单一继承,要实现多重继承,需要借助于接口。
二、继承关系
父类 子类
成员函数或变量 可继承,public protected 类型的成员可以直接在子类内访问,private类型成员,只能借助父类函数访问
构造函数 不可继承
设定终止继承的成员 不可继承,在父类的方法之前加上final关键字,子类方法不能覆盖。
三、构造函数的调用顺序
如果没有无参的构造函数则必须使用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