2014-12-12 3 views
-1

в эти дни я читаю учебники по java.И в разделе «Контроль доступа к членам класса» у меня есть некоторые проблемы на уровне доступа модификатора «protected» .let me показать код :Модификатор «защищенный» уровень доступа

package PackagesOne; 

public class Alpha { 
    protected String name; 
} 



package PackagesTwo; 

import PackagesOne.Alpha; 

public class AlphaSub extends Alpha { 
    public static void main(String[] args){ 
     Alpha alpha = new Alpha(); 
     String name = alpha.name; 
    } 
} 

и в PackagesOne я объявить имя строка модификатора «защищенного», в pacagesTwo AlpaSub является подклассом Альфа в packagesOne.And мой вопрос заключается в том, что в руководстве по Java Управление доступом к Члены класса, он говорит, что подкласс в других пакетах может обращаться к членам класса, которые модифицируются с помощью protected.but, но я не могу этого сделать, когда javac AlphaSub имеет ошибку.

+1

«у него есть ошибка» - это * никогда * достаточно информации. * Всегда * указывать сообщение об ошибке. И в этом случае прочитайте http://docs.oracle.com/javase/specs/jls/se8/html/jls-6.html#jls-6.6.2 –

+0

спасибо большое, а старший я хочу подружиться с вы, можете ли вы дать мне некоторую информацию о вас, как электронную почту? – thinkinjava

ответ

1

Это потому, что вы создаете объект Альфа попробуйте создать объект AlphaSub:

AlphaSub alphaSub = new AlphaSub(); 
String name = alphaSub.name; 

маркировки переменной защищенному это позволяет ему получить доступ за пределами пакета, но только через объект подкласса, а не объект в ParentClass в

+0

большое спасибо. – thinkinjava

+0

в любое время чувак :) –

0

Вы не согласны с ним правильно. Вам нужно создать объект AlphaSub.

0

Защищенные элементы доступны в подклассе только в качестве членов подкласса. Таким образом, в AlphaSub его доступно как this.name. Но не как alpha.name, потому что имя не является общедоступным.

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