CodeGym /Cursuri /Java Multithreading /Moștenind clase imbricate

Moștenind clase imbricate

Java Multithreading
Nivel, Lecţie
Disponibil
Moștenirea claselor imbricate - 1

"Bună, Amigo!"

— Bună, Kim.

„Vreau să vă spun despre moștenirea claselor imbricate statice și non-statice.”

"Sunt gata."

„Nu există într-adevăr probleme cu moștenirea claselor imbricate statice. Acestea sunt moștenite la fel ca și clasele obișnuite:”

Exemplu
public class Car
{
 public static class Door
 {

 }
}

public class LamborghiniDoor extends Car.Door
{
}

„Dar putem face ca clasele imbricate statice să moștenească clase imbricate statice în alte clase?”

"De ce nu?"

Exemplu
public class Car
{
 public static class Door
 {

 }
}

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

"OK, am înțeles. Sunt moștenite la fel ca și cursurile obișnuite, nu?"

"Da. Dar clasele imbricate non-statice (cunoscute ca clase interioare) nu sunt moștenite la fel de ușor."

„Când este creată o instanță a unei clase interioare, o referință la clasa sa exterioară este stocată și implicit transmisă constructorului.”

„Ca urmare, atunci când creați obiecte dintr-o clasă care moștenește o clasă interioară, trebuie să transmiteți obiectul exterior necesar în mod explicit.”

„Așa arată:”

Cod
public class Car
{
 public class Door
 {

 }
}

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

"Trebuie să treceți implicit un obiect Car către constructorul Door. Acest lucru se face folosind un construct special: «car.super()»."

"Apropo, dacă încerci să creezi constructorul LamborghiniDoor fără niciun parametru, programul pur și simplu nu se va compila. Puțin ciudat, nu?"

„Da, există câteva nuanțe, dar nu este știință rachetă”.

Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION