java - Java 多态性:为什么会返回错误?
问题描述
为什么会跑步
Larry var3 = new Jerry();
var3.method3();
输出错误而不是
拉里 1
哈利 1
玛丽 3
我认为这可能与创建对象的方式有关。但这只是我的猜测。
这是代码:
public class Harry {
public void method1() {
System.out.println("harry 1");
}
public void method2() {
method1();
System.out.println("harry 2");
}
}
public class Larry extends Harry {
public void method1() {
System.out.println("larry 1");
super.method1();
}
}
public class Mary extends Larry {
public void method2() {
System.out.println("mary 2");
}
public void method3() {
super.method1();
System.out.println("mary 3");
}
}
public class Jerry extends Mary {
public void method2() {
super.method2();
System.out.println("jerry 2");
}
}
解决方案
利用
((Mary) var3).method3();
它会正常工作。
推荐阅读
- sql-server - 如何将动态数据屏蔽与 FOR XML PATH 和子查询一起使用
- powershell - 在具有 [无策略] 的邮箱上使用 Get-RetentionPolicy
- grouping - 使用顺序变化进行分组
- reactjs - 提供者组件(react-redux)如何验证或知道一个组件是它的子组件还是在它的上下文中?
- r - 将两个具有不同列名的 dfs 合并,然后融合
- python-3.x - 如何使用 sqlalchemy 在 python 中加载 elasticsearch?
- .net - 需要搜索一个目录并遍历 zip 文件并通读每个
- python - 如何创建带有列的 Pandas DataFrame?
- authentication - 防止不合理使用谷歌云功能
- java - Android Studio(Java)连续语音识别代码不起作用