调用扩展类的函数

问题描述 投票:1回答:4

我想调用扩展类的函数。如何才能做到这一点?

class Main{
    Function();
}

class Other extends Main{
    public void Function() { /* The function code */ }
}
java class function call
4个回答
2
投票
public class BaseCls {
    void function() {
        System.out.println("Base");
    }
}



public class ExtCls extends BaseCls {
void function() {
    super.function();
    System.out.println("ExtCls");
}

public static void main(String args[]) {
    new ExtCls().function();
    }
} 

0
投票

您可以将Main定义为抽象类,并将function()定义为抽象方法,在Other子类中实现。但是,在某些时候你必须创建一个Other实例。


0
投票
class Main {
    public void Function() { F2(); }

    public abstract void F2();
}

class Other extends Main {
    public void F2() { /* code here */ }
}

0
投票

Main对类Other中不属于类Main的内容没有特殊权限。此外,Main对象不一定是Other对象。因此,您需要在类Main的对象调用Function()时定义行为。你也可以

  • 声明Function()是抽象的,意味着你不能创建类Main的对象,类Other被迫定义Function()或者是抽象本身,或者
  • 声明类Main中的默认实现,该实现适用于Mains而不是Others的对象。

根据情况,这两种方式都是可以接受的。如果您需要帮助选择哪一个更适合您的情况,您必须提供更多详细信息。

例:

class Main {
    public abstract void Function();    

    private void SomeFunction() {
        Function();
    }
}

class Other extends Main {
    public void Function() { /* code here */ }

}

要么

class Main {
    public void function() { /* default code here, can be empty */ };    

    public void someFunction() {
        function();
    }
}

class Other extends Main {
    public void function() { /* code here */ }

}

class Example {
    public void example() {
        Main main = new Main();
        Other other = new Other();

        main.function(); // call the function defined in class Main
        other.function(); // call the function defined in class Other

        main.someFunction(); // call Main.someFunction, which calls Main.function
        other.someFunction(); // call Main.someFunction, which calls Other.function
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.