解釋下 Java 中的欄位隱藏?
每當你繼承一個超類,超類的成員的一個副本就會在子類中建立,並且你可以使用它的物件訪問超類成員。
如果超類和子類具有同名例項變數,如果你使用子類物件訪問它,則無論其型別如何,子類欄位都會隱藏超類的欄位。這種機制稱為欄位隱藏。
但是,由於它使程式碼變得複雜,因此不推薦欄位隱藏。
示例
在以下示例中,我們有兩個類:Super 和 Sub,它們相互擴充套件。它們都有兩個同名欄位(名稱和年齡)。
當我們使用 Sub 的物件列印這些欄位的值時,它將列印子類的值。
class Super{
String name = "Krishna";
int age = 25;
}
class Sub extends Super {
String name = "Vishnu";
int age = 22;
public void display(){
Sub obj = new Sub();
System.out.println("Name: "+obj.name);
System.out.println("age: "+obj.age);
}
}
public class FieldHiding{
public static void main(String args[]){
new Sub().display();
}
}輸出
Name: Vishnu age: 22
不過,如果你需要訪問超類的欄位,你需要使用 super 關鍵字,如下所示:
示例
class Super{
String name = "Krishna";
int age = 25;
}
class Sub extends Super {
String name = "Vishnu";
int age = 22;
public void display(){
Sub obj = new Sub();
System.out.println("Name: "+obj.name);
System.out.println("age: "+obj.age);
System.out.println("Name: "+super.name);
System.out.println("age: "+super.age);
}
}
public class FieldHiding{
public static void main(String args[]){
new Sub().display();
}
}輸出
Name: Vishnu age: 22 Name: Krishna age: 25
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP