Java 将超级变量强制转换为类类型
我有以下代码:Java 将超级变量强制转换为类类型,java,Java,我有以下代码: class a { void show() { System.out.println("in a"); } } class b extends a { void show() { System.out.println("in b"); } } class c extends b { void show() { // can i do here ((a)super).show
class a {
void show() {
System.out.println("in a");
}
}
class b extends a {
void show() {
System.out.println("in b");
}
}
class c extends b {
void show() {
// can i do here
((a)super).show();
}
}
如果我们可以将超变量强制转换为超类类型,请更新
b。为什么变量不显示重写方法所显示的多态现象
c。我读到super.super.methodname()
无法删除以避免违反封装。有人能解释一下这是怎么回事吗
谢谢
b。为什么变量不显示重写方法所显示的多态现象
因为字段变量在java中不是polymorphic的
c。我读到super.super.methodname()不起作用是为了避免违反封装。有人能解释一下这是怎么回事吗
首先,super不是一个变量。这是一个关键字。可能是的重复项,但我想知道这是如何违反封装的。请对此进行更新。@用户Jon Skeet在那篇文章中给出了非常好的解释,总结了它,您不应该被允许直接控制super的super,绕过它super可以强制转换到任何类typesuper引用父类型,例如,在Animal和Human的super中,人类的super将引用Animal,所以您可以将super转换为任何有效的引用,它可以指向我们无法将super转换为类a的原因。是java不允许从孙子类调用祖父母类方法吗