2

拡張クラスの関数を呼び出したい。これはどのように行うことができますか?

class Main{
    Function();
}

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

4 に答える 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();
    }
} 
于 2012-04-24T16:13:12.277 に答える
0

クラスMainには、クラスに含まれていないものに関して、クラスに含まれているものに関して特別な特権OtherはありませんMain。また、Mainオブジェクトは必ずしもオブジェクトではありませんOtherMainしたがって、Classのオブジェクトがを呼び出すときの動作を定義する必要がありますFunction()。あなたはどちらかをすることができます

  • 抽象的であると宣言Function()します。つまり、クラスのオブジェクトを作成できず、クラスMain自体Otherを定義Function()または抽象化する必要があります。
  • sではなくsMainであるオブジェクトに対して機能するClassのデフォルト実装を宣言します。MainOther

状況に応じてどちらの方法でもかまいません。状況に応じてどちらが優れているかを選択するための支援が必要な場合は、詳細を提供する必要があります。

例:

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
    }
}
于 2012-04-24T16:29:22.950 に答える
0

Main抽象クラスとして定義し、サブクラスfunction()に実装された抽象メソッドとして定義できます。Otherただし、ある時点で のインスタンスを作成する必要がありますOther

于 2012-04-24T16:05:17.350 に答える
0
class Main {
    public void Function() { F2(); }

    public abstract void F2();
}

class Other extends Main {
    public void F2() { /* code here */ }
}
于 2012-04-24T16:08:15.020 に答える