Почему поле без модификатора видно в подклассе? [Дубликат]

1

Почему в подклассе видимо поле без модификатора?

Мой суперкласс:

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...

Но это не так, поскольку никакие поля модификатора не видны только в классе и пакете, но не в подклассах, или что я неправильно понял? благодаря

  • 3
    В каком пакете ваши уроки?
  • 0
    хорошо, ответы верны, я думал, что утверждение сильнее, что оно не видно в подклассах
Показать ещё 2 комментария
Теги:
subclass
access-modifiers
visibility

2 ответа

3
Лучший ответ

Когда не присутствует модификатор, применяется доступ по умолчанию, считайте доступ по умолчанию доступным как доступ к пакету, класс с доступом по умолчанию можно увидеть только классами внутри одного пакета

Test класса должен находиться в том же пакете, что и ваш SuperClass, поэтому его видно.

источник: http://www.datadisk.co.uk/html_docs/java/access_control.htm

3

Отсутствие модификатора означает, что область поля или метода является "только пакетом".

Таким образом, ваш подкласс должен быть в том же пакете, что и суперкласс, поскольку он имеет доступ к полю в суперклассе, который не имеет модификатора.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню