Если вы наследуете действие, в котором объявлены определенные переменные-члены, как вы получаете доступ к этим переменным-членам в подклассе, выполняющем наследование?Доступ к унаследованным переменным класса в java
ответ
public
или protected
имена участников могут быть получены через this.memberName
от любого конструктора или не static
метода или инициализатора.
private
или элементы уровня пакета (доступ из подкласса в другой упаковке) не могут быть доступны напрямую и должны быть доступны через непривилегированный интерфейс, например, с помощью public
.
Если участники были объявлены private
, или если они были объявлены с доступом по умолчанию (пакет), а ваш подкласс находится в другом классе, вы не можете получить доступ к переменным. Если были предоставлены аксессоры, вы можете использовать их. В противном случае они недоступны.
Если были объявлены члены protected
или public
, то доступ к ним, как если бы они были объявлены в собственном классе (this.var
, или просто var
, если нет никакой двусмысленности). Если у вас есть член в подклассе с тем же именем, что и суперкласс, вы можете использовать super.var
для доступа к переменной суперкласса.
Помогло ли downvoter объяснить? –
+1 чтобы противостоять необъяснимому проголосованию. – mre
class A {
protected int a = 3;
}
class B extends A {
protected int b = 2;
void doIt() {
System.out.println("super.a:" + super.a);
System.out.println("this.b: " + this.b);
}
}
Как заявил другие, открытые и защищенные поля могут быть доступны через this.field
из подкласса. Пакет-частные поля также можно получить таким же образом, но только в том случае, если подкласс находится в том же пакете, что и родительский.
Доступ к закрытым полям недоступен, но к ним можно получить доступ, используя Java reflection, если это позволяют настройки безопасности. Обычно не рекомендуется практиковать (частные члены обычно являются приватными по какой-либо причине), но может быть полезна в некоторых ситуациях, например, для доступа к частным членам класса для целей тестирования кода. См. the answers to this question о том, как использовать отражение таким образом.
- 1. Доступ к унаследованным переменным класса в PHP
- 2. Доступ к переменным класса Java?
- 3. Java-дизайн, доступ к переменным класса
- 4. Доступ к переменным Selenium Java
- 5. Доступ к частным/унаследованным переменным-членам специализированного шаблона
- 6. Доступ к переменным родительского класса
- 7. Доступ к переменным унаследованного класса
- 8. Java Доступ к внешним переменным класса из внутреннего класса singleton
- 9. Доступ к переменным класса из другого класса
- 10. доступ к переменным в методе класса
- 11. VB.NET Доступ к переменным класса в словаре
- 12. Доступ к переменным из класса в класс
- 13. php: Доступ к переменным класса в конструкторе
- 14. Доступ к статическим переменным класса в C++?
- 15. Доступ к переменным класса в представлениях
- 16. django доступ к переменным класса в представлении
- 17. Доступ к переменным-членам класса в Python?
- 18. Доступ класса к глобальным переменным в Python
- 19. Доступ к переменным класса внутреннего объекта
- 20. Не удается получить доступ к унаследованным членам класса в конструкторе
- 21. класса Java Качели доступа к переменным Баттона
- 22. Доступ к переменным экземпляра из другого класса
- 23. Доступ к переменным в JFrame
- 24. Java: как получить доступ к переменным другого класса
- 25. Java - Доступ к переменным из анонимного внутреннего класса
- 26. java inheritance, доступ к переменным супер класса внутри подкласса?
- 27. Доступ к переменным из внутреннего класса
- 28. Доступ к унаследованным свойствам через статический класс
- 29. Доступ к переменным из родительского класса
- 30. Не удается получить доступ к переменным класса
Также убедитесь, что у вас нет конфликта имен: http://java.sys-con.com/node/46344, если вы столкнулись с неожиданным поведением. – jefflunt