[英]Protected variable not accessible within child class in Java
我有以下結構 -
App.java
-
package JohnParcellJavaBasics.AccessModifierDemo;
import JohnParcellJavaBasics.AccessModifierDemo.*;
public class App {
public static void main(String[] args) {
}
}
AnimalApp.java
-
package JohnParcellJavaBasics.AccessModifierDemo.Animal;
import JohnParcellJavaBasics.AccessModifierDemo.Animal.*;
public class AnimalApp {
protected String animalName;
public void myMethod() {
}
}
Eagle.java
-
package JohnParcellJavaBasics.AccessModifierDemo.Animal.Bird;
import JohnParcellJavaBasics.AccessModifierDemo.Animal.*;
public class Eagle extends AnimalApp {
public void myMethod() {
AnimalApp.animalName = "abc";
}
}
在文件 - Eagle.java
中,在AnimalApp.animalName = "abc";
在animalName
下方有一條讀取行,內容為-
The field AnimalApp.animalName is not visible
這怎么可能?
我在 Ubuntu 和 OpenJDK 11 上使用 VSCode。
發生這種情況是因為您混淆了 static 和實例成員。
AnimalApp.animalName - is a way to refer to a static variable (by using the class name, because static variable resides on the class, they do not belong to any instance of the class and hence cant be inherited).
this.animalName或super.animalName或只是animalName - 是訪問實例變量的正確方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.