У меня есть следующие два фрагмента кода:Protected Модификатор доступа
/**
*
*/
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.But его давая мне ниже ошибок:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The field MyThread.b is not visibilty.
Моего беспокойства переменных б должны быть доступны из подкласса, как я уже продлил MyThread. Но это дает мне ошибку времени компиляции. Также, когда я объявляю эту переменную статичной в моем суперклассе, я смог получить к ней доступ напрямую. Так что я делаю, когда пытаюсь получить доступ через экземпляр?
OP фактически пытается получить доступ к аттестованному свойству из экземпляра 'th1'. – ShuklaSannidhya
: Спасибо, я получил вашу точку. Я смешивал две разные видимости вместе. Один для примера и другой для наследования. – noone