Clasele de părinți și copii care au același membru al datelor în Java

În C ++ avem toate metodele membrilor clasei ca non-virtuale. Pentru a face acest lucru, trebuie să folosim un cuvânt cheie ca prefix cunoscut sub numele de virtual . În timp ce în Java avem toate metodele de membru al clasei ca virtuale în mod implicit. Pentru a le face non-virtuale, folosim cuvântul cheie final .

Variabilele de referință din Java sunt practic variabile care dețin adresa obiectului în tipul hexadecimal, care ulterior este convertit în sistemul binar, care este practic adresa obiectului care trebuie stocat în memoria de grămadă.

Variabile de referință care diferă de tipurile primitive, deoarece dimensiunea lor nu poate fi calculată. În Java, variabila de referință a clasei părinte este capabilă să -și țină referința obiectului, precum și referința obiectului său pentru copii. Să vedem despre membrii non-metode cu ajutorul unui exemplu.

Exemplu:

Java
   // Java Program to Demonstrate that Non-method Members   // are Accessed according to Reference Type   // (Unlike methods that are accessed according   // to the referred object)   // Class 1   // Super class   class   Parent     {      int     value     =     1000  ;      // Constructor of super class      Parent  ()      {      // Print statement      System  .  out  .  println  (  'Parent Constructor'  );      }   }   // Class 2   // Sub class   class   Child     extends     Parent     {      int     value     =     10  ;      // Constructor of sub class      Child  ()      {      // Print statement      System  .  out  .  println  (  'Child Constructor'  );      }   }   // Class 3   // Main class   class   GFG     {      // Main driver method      public     static     void     main  (  String  []     args  )      {      // Creating an object of sub class inside main()      // method      Child     obj     =     new     Child  ();      // Printing the reference of child type      System  .  out  .  println  (  'Reference of Child Type :'      +     obj  .  value  );      // Note that doing 'Parent par = new Child()'      // would produce same result      Parent     par     =     obj  ;      // Par holding obj will access the value      // variable of parent class      // Printing the reference of parent type      System  .  out  .  println  (  'Reference of Parent Type : '      +     par  .  value  );      }   }   

Ieșire
Parent Constructor Child Constructor Reference of Child Type :10 Reference of Parent Type : 1000 

Explicație de ieșire: Dacă o variabilă de referință a părintelui ține referința clasei de copil și avem variabila „valoare” atât în ​​clasa părinte cât și în cel copil, se va referi la variabila clasei părinte „Valoare”, indiferent dacă păstrează referință de obiect al clasei copilului. Referința care reține referința obiectului de clasă pentru copii nu va putea accesa membrii (funcții sau variabile) din clasa copilului. Acest lucru se datorează faptului că variabila de referință a părintelui poate accesa doar câmpuri care se află în clasa părinte. Astfel, tipul de variabilă de referință decide ce versiune de „valoare” va fi numită și nu tipul de obiect care este instantaneu. Se datorează faptului că compilatorul folosește un mecanism special de polimorfism în timp de rulare numai pentru metode. (Există tipul de obiect care este instantaneu decide ce versiune a metodei trebuie numită).

Nota: Este posibil să se acceseze membrii datelor pentru copii folosind indicatorul părinte cu tipografie.


S-Ar Putea Să Vă Placă