如果我在父类中有一堆字段都需要被子类继承,那么将子类嵌套在超类中会更好吗?比私人还是使用受保护的访问者?或者其他一些选择?Java - 受保护的'getters'与嵌套类
0
A
回答
3
最简单的解决方案是使超类字段或实例变量受到保护,但是,如果将它们设置为私有,则可以始终通过getter和setter访问它们,因为它遵循封装原则,因此概念上更好。
1
最简单的解决方案似乎是让这些字段受到保护,除非您有一个令人信服的理由不这样做,否则就去做。
1
我认为使用受保护的访问器是最好的方法和更常见的方法。
1
如果你希望它可以被子类访问,你只剩下两个选项,public和protected。受保护的可能是你想要的。当您在java中使用extends
关键字进行继承时,下表适用。
Access Levels
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 Parent {
private int x = 5;
//Not really a subclass
private class NestedClass {
public NestedClass() {
int hax = new Parent().x; // Works!
}
}
//More of a nestedclass than a subclass.
private class SubClass extends Parent {
public SubClass() {
int stillHax = new Parent().x;
}
}
}
你,直到你使用extends
或implements
关键字不使用继承,所以你可能希望有子类扩展父类(在不同的文件中)和变量会保护(或公共)级访问。请注意,处于同一家庭或同一班级需要网格中的优秀。以上两个例子的工作原因是SAME类中的其他类作为父类。
只要按照网格,就是这样。
1
有些情况下,暴露受保护的字段或受保护的访问者方法是有意义的。所以这一切都取决于您的父类的设计,并且您希望子类如何使用您的父类。
但是,这是肯定的:“是否有更好的方式将子类嵌套在超类中”< - 这很少是正确的选择。
+0
谢谢,我会记住它。 – 2013-04-09 08:34:49
相关问题
- 1. 嵌套类:从嵌套保护的类
- 2. 反射没有找到嵌套类型的受保护字段
- 3. Java中受保护的类结构?
- 4. 继承和受保护类java
- 5. 受保护的派生类
- 6. .NET中受保护的类
- 7. 受保护与不受保护的区别
- 8. “不能批量分配受保护的属性”嵌套属性
- 9. 嵌套形式 - 不能质量分配受保护的属性
- 10. 如何保护java.lang.Object的受保护方法免受子类攻击?
- 11. 如何从成员访问受保护/私有嵌套类指针
- 12. Java的嵌套类
- 13. Java:受保护的,可见的
- 14. 嵌入播放器与受保护的视频
- 15. Ruby:类中的嵌套类与嵌套类中的嵌套相同?
- 16. Java:跨包的受保护访问
- 17. Java中受保护的方法?
- 18. Java中的受保护方法
- 19. Github受保护的分支与GitFlow
- 20. 对象类的受保护方法MemberWiseClone()
- 21. 访问Android类的受保护变量
- 22. 密封类中的受保护成员
- 23. 克隆受保护的边缘受保护的驱动器
- 24. 来自子类的Java访问受保护变量
- 25. 如何在受保护的java类上实现接口
- 26. '保护'是一个可接受的Java类名称
- 27. Java通过受保护的getter访问私有超类成员
- 28. 环回保护嵌套关系
- 29. Java类名与嵌套包名相同
- 30. 覆盖受保护的内部受保护!
由于这很大程度上取决于您的用例,请您详细说明一下吗? – 2013-04-09 07:47:38
定义“更好”。 – 2013-04-09 07:53:44
我有一个超类(Employee),它拥有很多其子类(员工类型)以及一些工资/税收计算方法(抽象和具体)通用的数据。这个子类做了大量的计算,它需要超类中字段的数据。只有很少的字段需要从这个类的外部访问。 – 2013-04-09 07:56:24