2013-06-21 3 views
0

У меня есть 2 классовЧастные поля, доступные в подклассах

class A { 
    private int count; 
} 

class B extends A { 
    //need to access count here 
} 

Какие стандартные способы можно использовать для доступа к нему?

+0

геттеры/сеттеры - это слова, которые вы ищете. Или сделать его «защищенным». – Maroun

+1

. , , , , protected –

+0

Если 'A' и' B' находятся в одном пакете, тогда пакет private - по умолчанию, поэтому нет ключевого слова - было бы мягко предпочтительнее 'protected' – emory

ответ

1

вы можете объявить поле protected, то он будет доступен для всех подклассов и пакет локальных классов.

Вы также можете получить геттеры/сеттеры (общая практика), если это поле может быть видимым для всех. Затем вы просто вызываете метод getCount(), чтобы получить счет.

смотрите здесь getters/setters example

+0

Пойду с геттером, спасибо за ссылку. – user2509983

7

Либо сделать countprotected, либо добавить метод getCount() в A.

+2

+1 для первого, кто предлагает 'protected'. – Maroun

+0

Я думаю, что будут проблемы с затенением (если подкласс имеет одинаковое имя переменной) с защищенным, не так ли? – kosa

+0

@Nambari Это, безусловно, что-то рассмотреть. Я бы, наверное, просто использовал геттер. –

0
class A { 
    private int count; 

    public int getCount(){ 
     return count; 
    } 
} 

class B extends A { 
    //need to access count here 
} 
-1

Java предотвращает наследование частных полей для суб-класса. Если вы хотите получить доступ к полям, вы также можете использовать методы оценки, то есть методы getter, или вы можете изменить тип доступа к полю защищенным или общедоступным. Опять же, защита будет работать только в том случае, если файл подкласса находится в одном каталоге. Если у вас есть файлы в отдельном каталоге, вам нужно будет изменить тип доступа к полю Public

+0

По каталогу, я думаю, вы имеете в виду пакет, и в этом случае ваше описание 'protected' неточно, но вместо этого описывает' package-private' – femtoRgon