我有以下两段代码:
/**
*
*/
package com.akshu.multithreading;
/**
* @author akshu
*
*/
public class MyThread extends Thread {
protected int b;
private int a;
@Override
public void run() {
super.run();
System.out.println("int a:"+a);
}
}
-----------
package com.akshu.utility;
import com.akshu.multithreading.MyThread;
public class MyUtility extends MyThread{
public static void main(String args[])
{
MyThread th1 = new MyThread();
int d =th1.b; // line1
System.out.println("int d"+d);
}
}
通过上面的代码文件,我试图了解受保护的访问修饰符的目的。在文件 MyUtility 中,我试图引用 MyThread 类的变量 b。但它给了我以下错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The field MyThread.b is not visibilty.
我担心变量 b 应该可以从子类访问,因为我已经扩展了 Mythread。但它给了我编译时错误。此外,当我在我的超类中将此变量声明为静态时,我能够直接访问它。那么当我尝试通过实例访问时,我做错了什么?