什么之前,正确的层次结构与正确的类修饰符getter和setter方法
我的问题是simmilar这些: get super class value in java Getting the name of a sub-class from within a super-class
但不解决我的问题。所以,我要解释它。我希望没有重复的话题......
我创建一个层次。此层次结构仅适用于使用getter和setter的Object。只是为了显示信息。
嗯,我想正确地做我的层次,但没有做一些ilogical与修饰。这是我班的一个简单的例子,是不完全的Java是伪代码:
Class A
private id;
Class B extends A
private dataB;
Class C extends A
private dataC;
变量“ID”是用于B类和C类常见的,因为是B和C扩展A. 我在想,我从来不会使用A类来表示数据,只需要B和C,就像A是抽象类一样。
我的问题是:
我不知道,如果是正确的put方法getter和setter A类与修饰符public和使用来自B类和C这个方法,因为层次是正确的,是符合逻辑的,但数据“id”未正确封装。
Class A
private id;
private name;
private age;
public getId(){...}
public getName(){...}
public getAge(){...}
Class B extends A
private dataB;
public getDataB(){...}
Class C extends A
private dataC;
public getDataC(){...}
要访问我的目标我想这样做:
B.getDataB();
B.getId();
B.getName();
B.getAge();
C.getDataC();
C.getId();
C.getName();
C.getAge();
这工作,但A类的所有方法必须是公开的,变量未正确封装。
是否有其他方法可以做到这一点? 这是最好的/最坏的方式?吸气剂和吸附剂可能是“跳”修饰剂的逻辑的例外吗?
我excpect你能理解我的榜样,我的“英语”。
谢谢您的高级。
你试图解决什么问题? B和C应该被期望继承A的方法。使用getters/setter是一种实现封装的策略。 –
类的私有属性不会被子类继承。因此,你必须明显地在子类中使用getter和setter。如果你想直接访问子类中的“id”等私有变量,则需要将它们声明为受保护的。 –