Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何调用基类方法_Java - Fatal编程技术网

Java 如何调用基类方法

Java 如何调用基类方法,java,Java,如何调用基类方法。在“invoke”类的方法“test”中,我试图向上转换到基类型以准确调用其方法,但出于某种原因,我对派生方法的调用是相同的 class BaseClass { protected void print(){ System.out.println("This is method print from BaseClass"); } } class DerivedClass extends BaseClass{ @Override

如何调用基类方法。在“invoke”类的方法“test”中,我试图向上转换到基类型以准确调用其方法,但出于某种原因,我对派生方法的调用是相同的

class BaseClass {

    protected void print(){
        System.out.println("This is method print from BaseClass");

    }

}

class DerivedClass extends BaseClass{

    @Override
    protected void print() {

        System.out.println("This is method print from DerivedClass");

    }
}

public class invokeDrawing{

    public void test() {

        DerivedClass derived = new DerivedClass();
        derived.print();

        System.out.println("****************");

        BaseClass derivedTest = (BaseClass)derived;
        derivedTest.print();

    }
}

您可以在其上添加一个方法,专门调用超类方法,如下所示:

public void superPrint() {
    super.print();
}
然后从派生类调用它:

derived.superPrint();

Java多态性的工作方式与您预期的不同。调用对象的方法时,将调用“最特定”的方法,除非另有指定。这是有意义的,因为您总是希望对象的行为符合实现的意图,而不是基类的意图(因为基类不知道特定的类-换句话说,您在派生类中有更多的上下文,因此该行为更适用)

在您的示例中,对象仍然是
DerivedClass
类型,尽管您将其“强制”为
BaseClass
。强制转换只掩盖了一个事实,即您实际上有一个
DerivedClass
-对象,但行为仍然来自
DerivedClass
中重写的方法

如果要从派生类调用超级方法,可以使用
super
关键字:

public String toString() {
    return "123 " + super.toString();
}

如果你真的真的需要它,有很多方法可以解决这个问题,但通常你不需要。

你可以在上面添加一个方法,它可以调用超类方法,但你不能。这违背了重写方法
print()
的全部目的。首先,这是为了什么?如果您想要方法的超级用户,为什么首先要重写该方法?如果你想要超类的方法,为什么不实例化超类呢?事实上,这是一个教育性的例子,我正在体验语言的可能性。