2015-11-04 4 views
0

Я очень смущен этим. может ли один очистить меня, почему он не разрешал код, который я поставил п комментируетДоступ к защищенным членам

package pack1; 
public class A { 
    protected void m1() { 
    System.out.println("This is very imp point"); 
} 


package pack2; 
import pack1.A; 
class B extends A { 
    public static void main(String arg[]) { 
    // A a1 = new A(); 
    //a1.m1(); 
    B b1 = new B(); 
    b1.m1(); 
    //A a2 = new B(); 
    //a2.m1(); } 
    } 
} 
+1

Пожалуйста, уделите время правильному форматированию кода. Пользователи SO полезны, но не настолько полезны, что они будут читать плохо отформатированный код, отформатировать его для вас, а затем решить вашу проблему. – Arc676

ответ

0

Вы можете получить доступ защищенные члены, объявленные в A в B, но только для случаев B или подклассов B. Проверьте это answer

1

Метод m1 is protected, поэтому он доступен через пакеты для дочерних классов.

Следовательно, экземпляры B смогут ссылаться или @Overridem1.

Не так mainstatic методы, даже если они относятся к классу B: сфера применения различна.

Вы можете сделать m1 общедоступным в A или вызвать его в вашем экземпляре B (например, в конструкторе и т. Д.).

Вы можете также переопределение A «s m1 в B и дать ему меньше ограничений доступа, что делает его public в этом случае: тогда вы могли бы получить доступ к нему на примере B из метода main как вы пытаетесь делать.

Смежные вопросы