编程语言:java JDK 1.8
实例代码:
public class Dome {
public static void main(String[] args) {
B b = new B();
System.out.println(((A)b).a);
}
}
class A {
public int a = 5;
}
class B extends A {
public int a = 10;
}
此代码的输出结果为5不为10。
所以我要问的是:怎么让对象强转后,属性保持不变(也就是让这个程序输出10)。
可以在子类B中添加一个方法,如下所示:
class B extends A {
public int a = 10;
public int getA() {
return a;
}
}
然后在main方法中调用该方法:
public class Dome {
public static void main(String[] args) {
B b = new B();
System.out.println(b.getA());
}
}
这样就可以输出10了。
注意:如果要在父类中访问子类的属性或方法,需要在子类中提供对应的getter方法。否则会访问父类的属性或方法。