Yuvalanmış sınıfları devralma - 1

"Merhaba, Amigo!"

"Merhaba Kim."

"Sana statik ve statik olmayan yuvalanmış sınıfları miras almaktan bahsetmek istiyorum."

"Ben hazırım."

"Statik iç içe geçmiş sınıfları devralmakla ilgili gerçekten herhangi bir sorun yok. Bunlar tıpkı normal sınıflar gibi miras alınır:"

Örnek
public class Car
{
 public static class Door
 {

 }
}

public class LamborghiniDoor extends Car.Door
{
}

"Ama statik iç içe geçmiş sınıfların diğer sınıflardaki statik iç içe sınıfları miras almasını sağlayabilir miyiz?"

"Neden?"

Örnek
public class Car
{
 public static class Door
 {

 }
}

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

"Tamam, anladım. Tıpkı normal sınıflar gibi miras alınırlar, değil mi?"

"Evet. Ama statik olmayan iç içe geçmiş sınıflar (iç sınıflar olarak bilinirler) o kadar kolay miras alınmazlar."

"Bir iç sınıfın örneği oluşturulduğunda, dış sınıfına bir referans saklanır ve dolaylı olarak yapıcıya iletilir."

"Sonuç olarak, bir iç sınıfı miras alan bir sınıfın nesnelerini oluşturduğunuzda, gerekli dış nesneyi açıkça iletmeniz gerekir."

"Böyle görünüyor:"

kod
public class Car
{
 public class Door
 {

 }
}

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

"Kapı yapıcısına dolaylı olarak bir Araba nesnesi iletmelisiniz. Bu, özel bir yapı kullanılarak yapılır: «car.super()»."

"Bu arada, herhangi bir parametre olmadan LamborghiniDoor yapıcısını oluşturmaya çalışırsanız, program derlenmeyecektir. Biraz tuhaf, değil mi?"

"Evet, birkaç nüans var ama bu roket bilimi değil."