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

Javaのmain()メソッドが常に静的であるのはなぜですか?


Java main() メソッドは常に静的であるため、コンパイラはオブジェクトを作成せずに、またはクラスのオブジェクトを作成する前にメソッドを呼び出すことができます。

  • どのJavaプログラムでも、 main() メソッドは、コンパイラがプログラムの実行を開始する開始点です。したがって、コンパイラはmain()メソッドを呼び出す必要があります。
  • main()の場合 main()を呼び出している間は、非静的にすることができます。 メソッドJVMはそのクラスをインスタンス化する必要があります。
  • インスタンス化するときは、そのクラスのコンストラクターを呼び出す必要がありますが、そのクラスのコンストラクターが引数を取る場合はあいまいになります。
  • クラスの静的メソッドは、クラスのオブジェクトを作成せずに、クラス名のみを使用して呼び出すことができます。
  • main() Javaのメソッドはpublicで宣言する必要があります 、静的 およびvoid 。これらのいずれかが欠落している場合、Javaプログラムはコンパイルされますが、ランタイムエラーがスローされます。

class Book {
   public static void getBookInfo() { //static method
      System.out.println("Welcome to TutorialsPoint Library");
   }
}
public class Test {
   public static void main(String[] args) {
      //Call static method of Book class using class name only
      Book.getBookInfo();
   }
}

出力

Welcome to TutorialsPoint Library

  1. コンストラクター名がJavaのクラス名と同じなのはなぜですか?

    すべてのクラスオブジェクトは同じ新しいキーワードを使用して作成されるため、オブジェクトを作成する必要のあるクラスに関する情報が含まれている必要があります。このため、コンストラクター名はクラス名と同じにする必要があります。 例 class MyConstructor{    public MyConstructor() {       System.out.println("The constructor name should be same as the class name");    }  

  2. Javaでオーバーライドするメソッド

    オーバーライドとは、サブクラスタイプに固有の動作を定義する機能です。つまり、サブクラスは、その要件に基づいて親クラスのメソッドを実装できます。 オブジェクト指向の用語では、オーバーライドとは、既存のメソッドの機能をオーバーライドすることを意味します。 例 例を見てみましょう。 class Animal {    public void move() {       System.out.println("Animals can move");    } } class Dog extends Ani