java - 如果一个类继承了一个方法,那么在该类上调用该方法是否指向父类(super class),或者是否在子类中创建本地副本?

标签 java inheritance super

假设我有 A 类和 B 类。B 类扩展了 A 类。A 类有一个方法。

public class notimportant
 {
    public void one()
    {
    }
 }

public class A extends notimportant
{
    public void one()
    { 
        //assume there is a super class making this call legal which doesnt do anything
        super.one();
        System.out.println("blah");
    } 
}

public class B extends A
{
}

A var1 = new B();

如果我调用“var1.one();”输出最终会是:

“废话” “废话”

因为它在 B 类中创建了“one()”的本地副本,然后读取调用“super()”的副本,从而将其引导至 A 类中的方法“one()”,或者它只是打印

“废话”

因为它知道直接看A类

编辑:希望现在更清楚了。

最佳答案

它将遵循您当前编写的方式:

-> New object of class B

-> Call method One on this object

-> First line calls supermethod, proceed to execute it

-> Second line prints out after that

尽管您的代码根本无法编译,您可能需要清除它。是什么阻止您亲自进行测试?

这是您所描述的新情况。一切仍然按预期工作,您只需添加一层即可。

public class C {
    public void test() {
        System.out.println("Inside C");
    }
}

public class B extends C {
    public void test() {
        super.test();
        System.out.println("Inside B");
    }
}

public class A extends B {
    public static void main(String[] args) {
        A obj = new A();
        obj.test();
    }
}

输出:

Inside C
Inside B

关于java - 如果一个类继承了一个方法,那么在该类上调用该方法是否指向父类(super class),或者是否在子类中创建本地副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18366802/

相关文章:

java - java中该类内部的一个类的实例

java - 如何使用换行符加密文件

java - 对 super 关键字的困惑; Java 中实现的装饰器模式

c++ - 在 C++ 中停止或阻止继​​承

python-3.x - 如何在 python 中将 *args 与类继承一起使用?

java - JLS 8 关于关键字 super 和 protected 成员

java - 将多个 Java 对象数组传递给另一个方法

java - JSP web 应用程序数据库连接无法加载

java - Java 中的动态方法查找

css - 元素动画关键帧的继承