logo

Класовете родители и деца, които имат същия член на данните в Java

В C ++ имаме всички методи за член на класа като не-виртуални. За да направим това, трябва да използваме ключова дума като префикс, известен като виртуални . Докато в Java по подразбиране всички методи за член на класа по подразбиране. За да ги направим не-виртуални, използваме ключовата дума окончателно .

Референтните променливи в Java са основно променливи, държащи адреса на обекта в шестнадесетичен тип, който по -късно се преобразува в двоичната система, която по принцип е адресът на обекта, който трябва да се съхранява в паметта на купчината.



Референтните променливи, които се различават от примитивните типове като техния размер, не могат да бъдат изчислени. В Java референтната променлива на родителския клас е в състояние да държи референцията си на обекта, както и референцията на своя обект на детето. Нека да видим за членовете, които не са методи с помощта на пример.

java виртуална машина

Пример:

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

Изход
Parent Constructor Child Constructor Reference of Child Type :10 Reference of Parent Type : 1000

Обяснение на изхода: Ако референтната променлива родител държи референцията на детския клас и ние имаме променливата „стойност“ както в родителския, така и в детската класа, тя ще се отнася до променливата „Стойност“ на родителския клас „Стойност“, независимо дали тя държи референтната референция на обекта от клас на деца. Референтният, който държи референцията на обекта на детския клас няма да има достъп до членовете (функции или променливи) на детската класа. Това е така, защото референтната променлива родител може да получи достъп само до полета, които са в родителския клас. По този начин типът референтна променлива решава коя версия на „стойност“ ще бъде извикана, а не типът обект, който се създава. Това е така, защото компилаторът използва специален механизъм за полиморфизъм за изпълнение само за методи. (Там типът на създаването на обект решава коя версия на метода да се извика).



Забележка: Възможно е да се получи достъп до членовете на данните за деца, използвайки родителски показател с типинг.