Java で重複したメソッド名を処理するにはどうすればよいですか?

PHPz
リリース: 2023-06-25 16:50:36
オリジナル
2643 人が閲覧しました

オブジェクト指向プログラミング言語としての Java の中心的な考え方は、カプセル化、継承、ポリモーフィズムです。メソッド名の重複は Java でよくある問題で、通常は継承やインターフェイスの実装時に発生します。この記事ではJavaでメソッド名が重複した場合の対処方法を紹介します。

1. メソッド名のオーバーロード

同じクラス内ではメソッド名を同じにすることができ、これをメソッドのオーバーロード (Overload) と呼びます。メソッドのオーバーロードとは、同じメソッド名の複数のバージョンが同じクラスに存在できることを意味します。それらのパラメータ リストは異なります (パラメータの数またはパラメータの型が異なります)。ただし、メソッドの戻り値の型は同じでも異なっていても構いません。メソッドを呼び出すとき、コンパイラは、渡されたパラメータの型と数に基づいて、どのメソッドを呼び出す必要があるかを決定します。

たとえば、次のコードは、パラメータの数とタイプが異なる、「add」という名前の 2 つのメソッドを定義します。

public class MathUtil {
    public static int add(int x, int y) {
        return x + y;
    }
    
    public static double add(double x, double y) {
        return x + y;
    }
}
ログイン後にコピー

このようにして、add メソッドが呼び出されるとき、コンパイラとプロセッサ渡されたパラメータのタイプと数に基づいて、呼び出す対応するメソッドが自動的に選択されます:

int result1 = MathUtil.add(1, 2); // 调用第一个add方法
double result2 = MathUtil.add(1.0, 2.0); // 调用第二个add方法
ログイン後にコピー

2. メソッド名オーバーライド

Java の継承プロセスでは、サブクラスが次のように定義している場合、および If親クラスに同じ名前のメソッドがある場合、サブクラスは親クラスの同じ名前のメソッドをオーバーライドします。この状況はメソッドのオーバーライドと呼ばれます。

上書きの原則は次のとおりです。サブクラスのメソッドは、親クラスのメソッドと同じ戻り値の型、メソッド名、パラメーター リストを持たなければなりません (パラメーターの数と型が同じです)。さらに、サブクラスが親クラスのメソッドをオーバーライドする場合、アクセス権は親クラスのメソッドのアクセス権より低くすることはできません。

たとえば、次のコードは、親クラスとサブクラスの両方に存在する「print」という名前のメソッドを定義します。

public class Animal {
    public void print() {
        System.out.println("This is an animal.");
    }
}

public class Cat extends Animal {
    @Override
    public void print() {
        System.out.println("This is a cat.");
    }
}
ログイン後にコピー

Cat インスタンスの print メソッドを呼び出すと、 Cat クラスは Animal クラスの print メソッドをオーバーライドするため、「This is a cat.」と出力されます。

3. インターフェイス内でのメソッド名の重複

Java インターフェイスでは、同じメソッド名で複数のメソッドを定義できますが、パラメータの型と番号は異なる必要があります。これをメソッドの繰り返しといいます。 。

たとえば、次のコードは「f」という名前のインターフェイスを定義します。このインターフェイスは、メソッド名は同じですがパラメータが異なる 3 つのメソッドを定義します。

public interface Example {
    void f(int x);
    void f(double x);
    void f(String s);
}
ログイン後にコピー

このインターフェイスを実装する クラスはこれら 3 つを実装する必要があります。メソッド。たとえば、次のコードは Example インターフェイスを実装しています。

public class MyExample implements Example {
    @Override
    public void f(int x) {
        System.out.println("f(int): " + x);
    }

    @Override
    public void f(double x) {
        System.out.println("f(double): " + x);
    }

    @Override
    public void f(String s) {
        System.out.println("f(String): " + s);
    }
}
ログイン後にコピー

このようにして、MyExample インスタンスの f メソッドを呼び出すと、コンパイラは、パラメータのタイプと数に基づいて、呼び出す対応するメソッドを自動的に選択します。渡されました。例:

Example example = new MyExample();
example.f(123); // 调用MyExample中的f(int)方法
example.f(456.0); // 调用MyExample中的f(double)方法
example.f("Hello"); // 调用MyExample中的f(String)方法
ログイン後にコピー

4. 概要

メソッド名の重複は Java でよく見られる問題で、解決策としてはメソッドのオーバーロード、メソッドの上書き、メソッドの重複の 3 つがあります。コードを記述するときは、実際の状況に応じて、さまざまな解決方法を選択する必要があります。同時に、Java のメソッド命名規則に従うことにも注意する必要があり、命名規則は明確かつ簡潔であり、コードの可読性と保守性の向上に役立ちます。

以上がJava で重複したメソッド名を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート