【发布时间】:2018-03-16 02:19:22
【问题描述】:
public class MyTest {
public static void main(final String[] args) {
B b = new B();
b.print();
}
}
class A {
private final int x = 5;
protected int getX() {
return x;
}
public void print() {
System.out.println(getX());
}
}
class B extends A {
private final int x = 10;
@Override
protected int getX() {
return x;
}
}
在这个例子中,我需要在父类中打印子类的值。
它工作正常。没有任何问题。
现在它正在打印 10。
但我不想在父 class A 中定义该属性。
因为在这个例子中这个x 数据类型非常简单。所以没有问题。
但在实时我想使用其他数据类型,可能是另一个类变量或List<something>,它们有大量数据。
所以最终我不希望将该值存储在Class A 中。
因为它是冗余数据。它会在我的休眠中减慢速度。
请让我知道,如何在不在父类中声明变量的情况下实现这一点。但是我仍然需要在父类中使用子类变量。
【问题讨论】:
-
那就不要在那里声明了!从
A中删除x,一切应该仍然有效。 -
@Sweeper,它不起作用,因为父母的
getX使用它 -
@AndrewTobilko 然后从
A中删除getX。我看不出有它的意义。并将print移动到B。A基本上不需要。 -
@Sweeper,为子类提供接口
标签: java class oop polymorphism parent-child