Java扩展和重写类
我有两门课:Java扩展和重写类,java,overriding,extend,Java,Overriding,Extend,我有两门课: class A{ method(){} } class B extends A{ @Override method(){ super.method(); //some logic } } 我创建了第三个: class C extends B{ @Override method(){ super.method(); //more logic } } 但我
class A{
method(){}
}
class B extends A{
@Override
method(){
super.method();
//some logic
}
}
我创建了第三个:
class C extends B{
@Override
method(){
super.method();
//more logic
}
}
但我不确定是否会执行“某些逻辑”。有人能告诉我这是不是,也许能给我推荐一个关于扩展类和过度赋值方法的好教程吗?你可以通过放置一些
System.out.println(“B类中的一些逻辑”)来轻松地尝试它您可以通过放置一些System.out.println(“B类中的一些逻辑”)来轻松地尝试它
并查看它是否被调用。如果在C
的实例上调用方法,则将执行//一些逻辑
和//更多逻辑
。但你不应该相信我的话。看看发生了什么,试试这些
- 添加打印语句以显示正在运行的代码位
- 编译程序并使用
javap-cc
对其进行分解,以查看正在运行的代码。您将看到对超级方法的调用,然后是一些代码。当您运行该方法时,它将像任何其他方法调用一样调用这个超级方法,然后像往常一样返回并继续
如果在C
的实例上调用方法
,则将同时执行//一些逻辑
和//更多逻辑
。但你不应该相信我的话。看看发生了什么,试试这些
- 添加打印语句以显示正在运行的代码位
- 编译程序并使用
javap-cc
对其进行分解,以查看正在运行的代码。您将看到对超级方法的调用,然后是一些代码。当您运行该方法时,它将像任何其他方法调用一样调用这个超级方法,然后像往常一样返回并继续
调用扩展方法的super()类时,通常会调用扩展(父)方法
这里有一个很好的继承教程当您调用扩展方法的super()类时,通常会调用扩展(父)方法
这里有一个很好的继承教程请考虑运行并测试它。撒上一些println语句,你会很快知道你的答案。到底是什么让你认为//某些逻辑
不会运行?如果你创建一个B
或C
对象,//将执行一些逻辑
,请考虑运行并测试它。撒上一些println语句,你会很快知道你的答案。到底是什么让你认为//某些逻辑
不会运行?如果你创建一个B
或C
对象,就会执行//一些逻辑