在Java中,子類可以隱藏父類中的字段,也就是說子類可以定義與父類相同名稱的字段。當(dāng)子類定義了與父類相同名稱的字段時(shí),子類的字段會(huì)隱藏父類的字段,也就是說在子類對(duì)象中訪問該字段時(shí),會(huì)優(yōu)先訪問子類的字段而不是父類的字段。
例如,假設(shè)有一個(gè)父類Animal和一個(gè)子類Dog,它們都有一個(gè)字段name:
class Animal {
String name = "Animal";
}
class Dog extends Animal {
String name = "Dog";
}
當(dāng)創(chuàng)建一個(gè)Dog對(duì)象并訪問name字段時(shí):
Dog dog = new Dog();
System.out.println(dog.name); // 輸出 "Dog"
即使Dog類繼承自Animal類,但是由于Dog類定義了與Animal類相同名稱的字段name,因此在Dog對(duì)象中訪問name字段時(shí)會(huì)優(yōu)先訪問Dog類的字段而不是Animal類的字段。這種現(xiàn)象稱為字段隱藏。
需要注意的是,字段隱藏只會(huì)影響通過子類對(duì)象訪問字段的情況,如果通過父類對(duì)象訪問字段,仍然會(huì)訪問父類的字段。如果想在子類中訪問父類中被隱藏的字段,可以使用super關(guān)鍵字來訪問父類的字段。