如果類(lèi) A 是類(lèi) B 的父類(lèi),而類(lèi) B 是類(lèi) C 的父類(lèi),我們也稱(chēng)類(lèi) C 是 A 的子類(lèi),類(lèi) C 是從類(lèi) A 繼承而來(lái)的。在 Java 中,類(lèi)的繼承是單一繼承,也就是說(shuō),一個(gè)子類(lèi)只能擁有一個(gè)父類(lèi)。
// A.java
public class A {
private int i;
protected int j;
public void func() {
}
}
// B.java
public class B extends A {
public int z;
public void fund(){
}
}
以上的代碼片段說(shuō)明,類(lèi) B 由類(lèi) A 繼承而來(lái)的,類(lèi) B 是類(lèi) A 的子類(lèi)。而類(lèi) A 是 Object 的子類(lèi),這里可以不顯示地聲明。
作為子類(lèi),類(lèi) B 的實(shí)例擁有類(lèi) A 所有的成員變量,但對(duì)于 private 類(lèi)型的成員變量類(lèi) B 卻沒(méi)有訪問(wèn)權(quán)限,這保障了類(lèi) A 的封裝性。
public class Dog extends Mammal{
public static void main(String args[]){
Animal a = new Animal();
Mammal m = new Mammal();
Dog d = new Dog();
System.out.println(m instanceof Animal);
System.out.println(d instanceof Mammal);
System.out.println(d instanceof Animal);
}
}
public interface Animal {}
public class Mammal implements Animal{
}
public class Dog extends Mammal{
}
instanceof 關(guān)鍵字
可以使用 instanceof 運(yùn)算符來(lái)檢驗(yàn) Mammal 和 dog 對(duì)象是否是 Animal 類(lèi)的一個(gè)實(shí)例。
interface Animal{}
class Mammal implements Animal{}
public class Dog extends Mammal{
public static void main(String args[]){
Mammal m = new Mammal();
Dog d = new Dog();
System.out.println(m instanceof Animal);
System.out.println(d instanceof Mammal);
System.out.println(d instanceof Animal);
}
}
Van 類(lèi)將實(shí)現(xiàn)的細(xì)節(jié)對(duì)用戶(hù)隱藏起來(lái),因此,用戶(hù)只需要知道怎樣調(diào)用 Van 類(lèi)來(lái)完成某一功能,而不必知道 Van 類(lèi)是自己來(lái)做還是調(diào)用其他類(lèi)來(lái)做這些工作。
更多建議: