继承
通过在类之间使用 extends
关键字,超类的所有属性(也称为父类或基类 )都存在于子类中(也称为子类或派生类 )
public class BaseClass {
public void baseMethod(){
System.out.println("Doing base class stuff");
}
}
public class SubClass extends BaseClass {
}
SubClass
的实例继承了 baseMethod()
的方法:
SubClass s = new SubClass();
s.baseMethod(); //Valid, prints "Doing base class stuff"
可以将附加内容添加到子类中。这样做允许子类中的其他功能,而无需对基类或同一基类的任何其他子类进行任何更改:
public class Subclass2 extends BaseClass {
public void anotherMethod() {
System.out.println("Doing subclass2 stuff");
}
}
Subclass2 s2 = new Subclass2();
s2.baseMethod(); //Still valid , prints "Doing base class stuff"
s2.anotherMethod(); //Also valid, prints "Doing subclass2 stuff"
字段也是继承的:
public class BaseClassWithField {
public int x;
}
public class SubClassWithField extends BaseClassWithField {
public SubClassWithField(int x) {
this.x = x; //Can access fields
}
}
private
字段和方法仍然存在于子类中,但是不可访问:
public class BaseClassWithPrivateField {
private int x = 5;
public int getX() {
return x;
}
}
public class SubClassInheritsPrivateField extends BaseClassWithPrivateField {
public void printX() {
System.out.println(x); //Illegal, can't access private field x
System.out.println(getX()); //Legal, prints 5
}
}
SubClassInheritsPrivateField s = new SubClassInheritsPrivateField();
int x = s.getX(); //x will have a value of 5.
在 Java 中,每个类最多可以扩展一个其他类。
public class A{}
public class B{}
public class ExtendsTwoClasses extends A, B {} //Illegal
这称为多重继承,虽然它在某些语言中是合法的,但 Java 不允许它与类一起使用。
因此,每个类都有一个不分支的祖先连锁类,导致所有类下降。