继承嵌套类 - 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 构造函数,程序根本无法编译。有点奇怪,是吧?”

“是的,有一些细微差别,但这不是火箭科学。”