繼承嵌套類 - 1

“嗨,阿米戈!”

“嗨,金。”

“我想告訴你有關繼承靜態和非靜態嵌套類的知識。”

“我準備好了。”

“繼承靜態嵌套類確實沒有任何問題。它們就像普通類一樣被繼承:”

例子
public class Car
{
 public static class Door
 {

 }
}

public class LamborghiniDoor extends Car.Door
{
}

“但是我們可以讓靜態嵌套類繼承其他類中的靜態嵌套類嗎?”

“為什麼不?”

例子
public class Car
{
 public static class Door
 {

 }
}

public class Lamborghini extends Car
{
 public static class LamborghiniDoor extends Car.Door
 {
 }
}

“好的,明白了。它們就像普通類一樣被繼承,對吧?”

“是的。但是非靜態嵌套類(稱為內部類)並不那麼容易繼承。”

“當創建內部類的實例時,將存儲對其外部類的引用並隱式傳遞給構造函數。”

“因此,當您創建繼承內部類的類的對象時,您必須顯式傳遞所需的外部對象。”

“這是它的樣子:”

代碼
public class Car
{
 public class Door
 {

 }
}

public class LamborghiniDoor extends Car.Door
{
 LamborghiniDoor(Car car)
 {
  car.super();
 }
}

“您必須隱式地將 Car 對像傳遞給 Door 構造函數。這是使用特殊構造完成的:«car.super()»。”

“順便說一下,如果你試圖創建不帶任何參數的 LamborghiniDoor 構造函數,程序根本無法編譯。有點奇怪,是吧?”

“是的,有一些細微差別,但這不是火箭科學。”