logo

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.