Tėvų ir vaikų užsiėmimai, turintys tą patį duomenų narį „Java“

„C ++“ visi klasės narių metodai yra ne virtualūs. Norėdami padaryti, todėl turime naudoti raktinį žodį kaip priešdėlį, žinomą kaip virtualus . Kadangi „Java“ visi klasės narių metodai yra virtualūs pagal numatytuosius nustatymus. Norėdami, kad jie būtų neviršijami, mes naudojame raktinį žodį galutinis .

„Java“ atskaitos kintamieji iš esmės yra kintamieji, turintys šešioliktainio tipo objekto adresą, kuris vėliau yra paverčiamas dvejetaine sistema, kuri iš esmės yra objekto, kurį reikia saugoti ant krūvos atminties, adresas.

Norint, kad jų dydis nesiskiria nuo primityviųjų tipų, nepavyksta apskaičiuoti kintamųjų. „Java“ informaciniame pagrindinės klasės kintamajame gali būti galima laikyti savo objekto nuorodą ir vaiko objekto nuorodą. Pažiūrėkime apie ne metodo narius, naudodamiesi pavyzdžiu.

Pavyzdys:

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

Išvestis
Parent Constructor Child Constructor Reference of Child Type :10 Reference of Parent Type : 1000 

Išvesties paaiškinimas: Jei tėvų atskaitos kintamasis laikosi vaiko klasės nuorodos ir mes turime kintamąjį „vertę“ tiek tėvų, tiek vaiko klasėje, jis nurodys tėvų klasės „reikšmės“ kintamąjį, nesvarbu, ar jis laikosi vaiko klasės objekto nuorodos. Nuoroda, laikanti vaiko klasės objekto nuorodą, negalės pasiekti vaikų klasės narių (funkcijų ar kintamųjų). Taip yra todėl, kad pirminis etaloninis kintamasis gali pasiekti tik pirminės klasės laukus. Taigi etaloninio kintamojo tipas nusprendžia, kuri „reikšmės“ versija bus vadinama, o ne tokio tipo objektas. Taip yra todėl, kad kompiliatorius naudoja specialų veikimo laiko polimorfizmo mechanizmą tik metodams. (Ten, koks yra momentinio objekto tipas, nusprendžia, kuri metodo versija turi būti vadinama).

Pastaba: Tai įmanoma pasiekti vaiko duomenų narius naudojant pagrindinį rodyklę su spausdinimu.