„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.