C++'da sanal olmayan tüm sınıf üyesi yöntemlerimiz var. Bunu yapabilmek için, önek olarak bilinen bir anahtar kelimeyi kullanmamız gerekir. sanal . Oysa Java'da varsayılan olarak tüm sınıf üyesi yöntemlerimiz sanaldır. Bunları sanal olmayan hale getirmek için anahtar kelimeyi kullanırız son .
Java'daki referans değişkenleri temel olarak nesnenin adresini onaltılık tipte tutan değişkenlerdir ve daha sonra temel olarak yığın belleğinde depolanacak nesnenin adresi olan ikili sisteme dönüştürülür.
Java'da dönüş türü
Boyutları nedeniyle ilkel tiplerden farklı olan referans değişkenleri hesaplanamaz. Java'da Parent sınıfının referans değişkeni, alt nesne referansının yanı sıra nesne referansını da tutabilir. Bir örnek yardımıyla yöntem dışı üyelere bakalım.
Örnek:
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); } }
Çıkış
Parent Constructor Child Constructor Reference of Child Type :10 Reference of Parent Type : 1000
Çıkış Açıklaması: Bir ebeveyn referans değişkeni alt sınıfın referansını tutuyorsa ve hem ebeveyn hem de alt sınıfta 'değer' değişkenimiz varsa, bu, alt sınıf nesne referansını tutuyor olsun ya da olmasın, üst sınıf 'değer' değişkenine atıfta bulunacaktır. Alt sınıf nesne referansını tutan referans, alt sınıfın üyelerine (işlevler veya değişkenler) erişemeyecektir. Bunun nedeni, üst referans değişkeninin yalnızca üst sınıftaki alanlara erişebilmesidir. Böylece, başlatılan nesnenin türü değil, 'değer'in hangi sürümünün çağrılacağına referans değişkeninin türü karar verir. Bunun nedeni, derleyicinin yalnızca yöntemler için özel bir çalışma zamanı polimorfizmi mekanizması kullanmasıdır. (Burada, başlatılan nesnenin türü, yöntemin hangi sürümünün çağrılacağına karar verir).
Not: Typecasting ile üst işaretçiyi kullanarak alt veri üyelerine erişmek mümkün kılınmıştır.