Razredi staršev in otrok z istim članom podatkov v Javi

V C ++ imamo vse metode članov razreda kot ne-virtualne. Da bi tako naredili, moramo uporabljati ključno besedo kot predpono, znano kot virtualno . Ker v Javi imamo privzeto vse metode članov razreda kot virtualne. Da bi bili ne-virtualni, uporabljamo ključno besedo finale .

Referenčne spremenljivke v Javi so v osnovi spremenljivke, ki imajo naslov predmeta v šestnajstični vrsti, ki se kasneje pretvori v binarni sistem, ki je v bistvu naslov predmeta, ki ga je treba shraniti v pomnilnik gomila.

Referenčne spremenljivke, ki se razlikujejo od primitivnih vrst, saj njihove velikosti ni mogoče izračunati. V Javi je referenčna spremenljivka nadrejenega razreda sposobna držati referenco objekta in referenco otroškega predmeta. Poglejmo o članih, ki niso metodi, s pomočjo primera.

Primer:

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  );      }   }   

Izhod
Parent Constructor Child Constructor Reference of Child Type :10 Reference of Parent Type : 1000 

Izhodna razlaga: Če matična referenčna spremenljivka drži referenco otroškega razreda in imamo spremenljivko "Vrednost" tako v razredu nadrejenega in otroškega razreda, se bo nanašala na spremenljivko "vrednost nadrejenega razreda", ne glede na to, ali drži referenco predmeta razreda otrok. Referenca, ki drži referenco predmeta otroškega razreda, ne bo mogla dostopati do članov (funkcij ali spremenljivk) otroškega razreda. To je zato, ker lahko matična referenčna spremenljivka dostopa samo do polj, ki so v nadrejenem razredu. Tako vrsta referenčne spremenljivke odloča, katero različico "vrednost" bo imenovana in ne vrsta predmeta, ki je instanciran. To je zato, ker prevajalnik uporablja poseben mehanizem polimorfizma, ki teče samo za metode. (Tam vrsta predmeta, ki je instanciran, odloči, katero različico metode naj se imenuje).

Opomba: Omogoča je dostop do članov podatkov otrok, ki uporabljajo starševski kazalec s tipkanjem.