我有以下兩種一段代碼:保護訪問修飾符
/**
*
*/
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,我想引用類的變量b MyThread.But它給我下面的錯誤:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The field MyThread.b is not visibilty.
我關心的是變量b應該從子類訪問,因爲我已經延長了MyThread的。但它給我編譯時錯誤。另外當我在我的超類中聲明這個變量爲靜態時,我能夠直接訪問它。所以當我試圖通過實例訪問時,我在做什麼錯?
OP實際上是試圖從一個實例'th1'訪問aprotected財產。 – ShuklaSannidhya 2013-03-17 14:15:08
:謝謝,我明白你的意思了。我把兩種不同的可見度混合在一起。一個例如和其他的繼承。 – noone 2013-03-17 14:39:08