Java继承附加函数而不是覆盖它

时间:2010-06-30 18:43:42

标签: java oop

public class Cls1{
    public foo(){
        doX();
    }
}

public class Cls2{
    public foo(){
        doY();
    }
}

Cls2 cls = new Cls2();
cls.foo();

当用户使用foo调用函数时,有没有办法在java中运行java运行doX和doY?

6 个答案:

答案 0 :(得分:5)

是的,但您必须明确地这样做:

public class Cls1{
    public foo{
        doX();
    }
}

public class Cls2 extends Cls1 {
    public foo{
        super.foo();
        doY();
    }
}

注意:我认为你的意思是让Cls2扩展Cls1,否则你的问题根本没有意义。

答案 1 :(得分:3)

public class Cls1 {
    public foo{
        doX();
    }
}

public class Cls2 extends Cls1 {
    public foo{
        super.foo();
        doY();
    }
}

Cls2 cls = new Cls2();
cls.foo();

答案 2 :(得分:1)

private class Cls2 extends Cls1 {      
    public void foo {
        doY();
        super.foo();
    }
}

答案 3 :(得分:1)

首先,我认为你的意思是:

public class Cls2 extends Cls1{

是的,有:

public (something?) foo(){
    super.foo();
    doY();
}

super关键字允许访问超类的方法。如果它只是自己调用:

super(...);

然后它调用超类的构造函数。

答案 4 :(得分:0)

假设Cls1Cls2以某种方式相互继承,您可以使用关键字super来调用超类的方法实现,例如,如果您想要在派生类中执行两个函数。

答案 5 :(得分:0)

如果doX()和doY()是静态导入的(因为它们没有在Cls1或Cls2中定义,这是我能想到的这个程序编译的唯一方法),那么你可以创建一个新的类一个方法foo,它在不使用继承的情况下调用doX和doY。然而,那些名为foo的方法与彼此无关。

相关问题