我有以下情况:
public class A {
private int x = 5;
public void print()
{
System.out.println(x);
}
}
public class B extends A {
private int x = 10;
/*public void print()
{
System.out.println(x);
}*/
public static void main(String[] args) {
B b = new B();
b.print();
}
}
执行代码时,输出为:5。
如何通过父类方法访问子类(B)的变量(x)?
是否可以在不覆盖print()方法的情况下完成此操作(即在B中取消注释)?
[这很重要,因为在重写时,我们将不得不再次重写print()方法的整个代码]
已编辑
更多说明:-
(感谢您的时间和帮助)
class A {
private int x = 5;
protected int getX() {
return x;
}
protected void setX(int x) {
this.x = x;
}
public void print() {
// getX() is used such that
// subclass overriding getX() can be reflected in print();
System.out.println(getX());
}
}
class B extends A {
public B() {
// setX(10); // perhaps set the X to 10 in constructor or in main
}
public static void main(String[] args) {
B b = new B();
b.setX(10);
b.print();
}
}
已编辑
以下是使用抽象类和方法解决类似情况的一般答案:
abstract class SuperA {
protected abstract Object getObj();
public void print() {
System.out.println(getObj());
}
}
class A extends SuperA {
@Override
protected Object getObj() {
// Your implementation
return null; // return what you want
}
}
class B extends A {
@Override
protected Object getObj() {
// Your implementation
return null; // return what you want
}
public static void main(String[] args) {
B b = new B();
b.print();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句