“嗨,阿米戈!”
“嗨,金。”
“我想告訴你有關繼承靜態和非靜態嵌套類的知識。”
“我準備好了。”
“繼承靜態嵌套類確實沒有任何問題。它們就像普通類一樣被繼承:”
例子
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 構造函數,程序根本無法編譯。有點奇怪,是吧?”
“是的,有一些細微差別,但這不是火箭科學。”
GO TO FULL VERSION