Java中的继承
Java中是单继承机制,使用extends关键字进行继承。
class Person {
private String name;
private int age;
public String getName() {...}
public void setName(String name) {...}
public int getAge() {...}
public void setAge(int age) {...}
}
class Student extends Person {
private int score;
public int getScore() { … }
public void setScore(int score) { … }
}
super关键字
super关键字代表父类。
public class SuperKeyWord {
public static void main(String[] args) {
Sub sub=new Sub();
}
}
class Super {
public int a;
protected int b;
public Super() {a=10;b=29;}
public Super(int a, int b){
this.a=a;
this.b=b;
}
}
class Sub extends Super {
public Sub() {
System.out.println(super.a);
System.out.println(super.b);
}
public Sub(int a, int b) {
//调用父类构造函数
super(a, b);
}
}
子类不会继承父类的构造函数,所以子类构造函数中的第一行代码就是调用父类的构造方法以初始化父类,如果父类有默认的无参构造方法,即使我们不在代码中显式调用父类构造方法,编译器也会自动调用父类的默认构造方法。如果父类只有有参构造方法,那么我们需要在子类构造器中显式嗲用父类的方法(使用super关键字)。
final关键字
使用final关键字修饰一个类的时候,可以组织其它类对其进行继承。从Java 15开始,允许使用sealed修饰class,并通过permits明确写出能够从该class继承的子类名称。
public sealed class Shape permits Rect, Circle, Triangle {
}
转型
这里和c++的向上转型、向下转型一样。Java提供了instance of关键字用于判断一个引用指向的类型是否为指定类型。