Warisan kelas nested - 1

"Halo, Amigo!"

"Hai, Kim."

"Aku arep menehi pitutur marang kowe bab warisan statis lan non-statis kelas nested."

"Aku siyap."

"Ora ana masalah karo warisan kelas nested statis. Dheweke diwarisake kaya kelas biasa: "

Tuladha
public class Car
{
 public static class Door
 {

 }
}

public class LamborghiniDoor extends Car.Door
{
}

"Nanging kita bisa nggawe kelas nested statis warisan kelas nested statis ing kelas liyane?"

"Ngapa ora?"

Tuladha
public class Car
{
 public static class Door
 {

 }
}

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

"Oke, entuk. Dheweke diwarisake kaya kelas biasa, ta?"

"Ya. Nanging kelas nested non-statis (dikenal minangka kelas batin) ora diwarisake kanthi gampang."

"Nalika conto saka kelas njero digawe, referensi kanggo kelas njaba disimpen lan sacara implisit dikirim menyang konstruktor."

"Akibate, nalika sampeyan nggawe obyek saka kelas sing marisi kelas njero, sampeyan kudu ngliwati obyek njaba sing dibutuhake kanthi jelas."

"Iki rupane:"

Kode
public class Car
{
 public class Door
 {

 }
}

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

"Sampeyan kudu implicitly pass obyek Car kanggo konstruktor Door. Iki wis rampung nggunakake mbangun khusus: «car.super ()».

"Oalah, yen sampeyan nyoba nggawe konstruktor LamborghiniDoor tanpa paramèter, program kasebut ora bakal dikompilasi. Aneh, ya?"

"Ya, ana sawetara nuansa, nanging dudu ilmu roket."