I C ++ har vi alla klassmedlemmetoder som icke-virtuella. För att göra så måste vi använda ett nyckelord som ett prefix som kallas virtuell . I Java har vi alla klassmedlemmetoder som virtuella som standard. För att göra dem icke-virtuella använder vi nyckelordet slutlig .
Referensvariabler i Java är i princip variabler som innehar adressen till objektet i hexadecimal typ som senare konverteras till det binära systemet som i princip är adressen till objektet som ska lagras på högminnet.
Referensvariabler som skiljer sig från primitiva typer eftersom deras storlek inte kan beräknas. I Java kan referensvariabeln för moderklassen hålla sin objektreferens såväl som sin barnobjektreferens. Låt oss se om icke-metodmedlemmar med hjälp av ett exempel.
Exempel:
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); } }
Produktion
Parent Constructor Child Constructor Reference of Child Type :10 Reference of Parent Type : 1000
Utgångsförklaring: Om en överordnad referensvariabel håller referensen till barnklassen och vi har "Value" -variabeln i både förälder- och barnklassen kommer den att hänvisa till förälderklassens värde "variabel oavsett om det håller barnklassobjektreferensen. Referensen som innehar barnklassobjektreferensen kommer inte att kunna komma åt medlemmarna (funktioner eller variabler) i barnklassen. Detta beror på att överordnadsreferensvariabeln endast kan komma åt fält som finns i förälderklassen. Således bestämmer typen av referensvariabel vilken version av "värde" som kommer att kallas och inte den typ av objekt som instanseras. Det beror på att kompilatorn använder en speciell polymorfismmekanism för körtid endast för metoder. (Där bestämmer den typ av objekt som instanseras vilken version av metoden som ska anropas).
Notera: Det möjliggörs att få åtkomst till barndatamedlemmar som använder förälderpekare med typ.