簡體   English   中英

受保護的變量在 Java 中的子 class 內不可訪問

[英]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.animalNamesuper.animalName或只是animalName - 是訪問實例變量的正確方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM