Почему в подклассе видимо поле без модификатора?
Мой суперкласс:
public class SuperClass {
String s = "superString";
public void method(){
System.out.println("Super");
}
}
Мой подкласс:
public class Test extends SuperClass{
public static void main(String args[]){
Test t = new Test();
System.out.println(t.s);
}
}
Я не получаю сообщение об ошибке из eclipse, программа печатает: superString...
Но это не так, поскольку никакие поля модификатора не видны только в классе и пакете, но не в подклассах, или что я неправильно понял? благодаря
Когда не присутствует модификатор, применяется доступ по умолчанию, считайте доступ по умолчанию доступным как доступ к пакету, класс с доступом по умолчанию можно увидеть только классами внутри одного пакета
Test
класса должен находиться в том же пакете, что и ваш SuperClass
, поэтому его видно.
источник: http://www.datadisk.co.uk/html_docs/java/access_control.htm
Отсутствие модификатора означает, что область поля или метода является "только пакетом".
Таким образом, ваш подкласс должен быть в том же пакете, что и суперкласс, поскольку он имеет доступ к полю в суперклассе, который не имеет модификатора.