Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaではクラス名と同じ名前のメソッドを定義できるのか?


はい、Javaではクラス名と同じ名前のメソッドを定義することが可能です。コンパイル時にも実行時にもエラーは発生しません。ただし、Javaのコーディング規約の観点からは推奨されていません。その理由は、Javaでは通常コンストラクタ名は必ずクラス名と同じになるため、同名のメソッドが存在するとコードの可読性や保守性を損ない、混乱を招く可能性があるからです。

サンプルコード

public class MethodNameTest {
    private String str = "Welcome to TutorialsPoint";
    public void MethodNameTest() { // クラス名と同じ名前のメソッドを宣言
        System.out.println("Both method name and class name are the same");
    }
    public static void main(String args[]) {
        MethodNameTest test = new MethodNameTest();
        System.out.println(test.str);
        System.out.println(test.MethodNameTest());
    }
}

上記の例では、メソッド名(MethodNameTest)をクラス名(MethodNameTest)と同じ名前で宣言していますが、エラーなく正常にコンパイルされ、実行も問題なく完了します。

実行結果

Welcome to TutorialsPoint
Both method name and class name are the same

補足:なぜ非推奨なのか

戻り値の型を持つ同名のメソッドは、あくまで通常のメソッドとして扱われ、コンストラクタとしては認識されません。このため、一見するとコンストラクタのように見えて誤解を生みやすく、バグの原因にもなりかねません。実際の開発では、メソッドには動詞ベースの分かりやすい名前を付け、クラス名との重複を避けることがベストプラクティスとされています。

  1. Javaの列挙型(enum)は任意のクラスを拡張できる?継承の仕組みを解説

    Javaの列挙型(enum)とは列挙型(enum)は、Javaにおいて定数の集合を格納するためのデータ型です。1週間の曜日や1年の月名など、固定された値のグループを扱う際に活用されます。列挙型を定義するには、enumキーワードの後に列挙型の名前を続けて記述します。enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }配列と同様に、列挙型内の要素(定数)には0から始まる番号が自動的に割り当てられます。上記の例では、各曜日が以下の図のように番号で識別されます。列挙型はクラスとよく似た構造を持ち

  2. Javaのメソッドオーバーライドとは?仕組みとサンプルコードを解説

    オーバーライドとはオーバーライド(Override)とは、サブクラスが親クラスから継承したメソッドを、自身の要件に合わせて再定義できる機能です。これにより、サブクラスはその型に固有の振る舞いを実装することができます。オブジェクト指向の観点で言えば、オーバーライドとは「既存のメソッドの機能を上書きする」ことを意味します。オーバーライドの例具体的な例を見てみましょう。以下のコードでは、Animal クラスの move() メソッドを、Dog クラスがオーバーライドしています。class Animal {    public void move() {&nbs