Почему защита может быть доступна в одном пакете без наследования в java?

  Modifier        Class     Package   Subclass  World
  public          Y         Y         Y         Y
  protected       Y         Y         Y         N
  no modifier     Y         Y         N         N
  private         Y         N         N         N


  public class a {
  protected int x;
  }

  public class b {
        b() {
              a A=new a();
              A.x=9;//why we can access this field ?
        }
  }

пожалуйста, помогите мне узнать конкретную работу защищенного в Java

Ответ 1

Почему? Потому что именно так был разработан язык программирования Java. Там не намного больше.

То, что есть protected, доступно из

  • сам класс,
  • в одном пакете (неважно, являются ли они подклассами или нет),
  • подклассы (неважно, находятся ли они в одном пакете или нет).

Это отличается от С++, но Java не является С++, поэтому он не обязательно работает одинаково.