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
对象,就会执行
//一些逻辑