
“嗨,阿米戈!”
“嗨,金。”
“我想告诉你有关继承静态和非静态嵌套类的知识。”
“我准备好了。”
“继承静态嵌套类确实没有任何问题。它们就像普通类一样被继承:”
例子
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