logo

Klase roditelja i djece s istim podacima u Javi

U C ++ imamo sve metode članova klase kao ne-virtualne. Da bismo to napravili moramo koristiti ključnu riječ kao prefiks poznat kao virtualan . Dok u Javi imamo sve metode članova klase kao virtualne prema zadanim postavkama. Da bismo ih učinili ne-virtualnim, koristimo ključnu riječ konačan .

Referentne varijable u Javi su u osnovi varijable koje drže adresu objekta u heksadecimalnom tipu koja se kasnije pretvara u binarni sustav koji je u osnovi adresa objekta koji se pohranjuje na memorijsku memoriju.



Referentne varijable koje se razlikuju od primitivnih tipova jer se njihova veličina ne može izračunati. U Javi je referentna varijabla matične klase sposobna zadržati referencu objekta kao i referencu djetetovog objekta. Da vidimo o članovima koji nisu metode uz pomoć primjera.

Primjer:

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

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

Izlazna objašnjenja: Ako roditeljska referentna varijabla drži referencu dječje klase i imamo varijablu 'vrijednost' i u matičnoj i dječjoj klasi, to će se odnositi na varijablu matične klase 'varijabla "da li drži referencu objekta djece. Referentna referenca objekta klase djece neće moći pristupiti članovima (funkcijama ili varijablama) dječje klase. To je zato što roditeljska referentna varijabla može pristupiti samo poljima koja su u matičnoj klasi. Stoga vrsta referentne varijable odlučuje koja će se verzija 'vrijednosti' nazvati, a ne vrsta objekta koja se instancira. To je zato što prevoditelj koristi poseban mehanizam za polimorfizam samo za metode. (Postoji vrsta objekta koja se instancira odlučuje koja verzija metode treba nazvati).



Bilješka: Omogućeno je pristupiti članovima podređenih podataka koristeći matični pokazivač s tipkanjem.