调用扩展类的函数

时间:2012-04-24 16:04:21

标签: java class function call

我想调用扩展类的函数。怎么办呢?

class Main{
    Function();
}

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

4 个答案:

答案 0 :(得分: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();
    }
} 

答案 1 :(得分:0)

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

答案 2 :(得分:0)

class Main {
    public void Function() { F2(); }

    public abstract void F2();
}

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

答案 3 :(得分:0)

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

  • 声明Function()是抽象的,这意味着您无法创建类Main的对象,而类Other被迫定义Function()或本身是抽象的,或
  • 声明类Main中的默认实现,该实现适用于Main而非Other s的对象。

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

示例:

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
    }
}