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

Javaで静的メソッドをオーバーロードまたはオーバーライドできますか?


Javaの静的メソッドはオーバーロードできます。ただし、2つのメソッドをオーバーロードできないという条件があります。これらは、キーワード「static」のために異なるだけです。

例を見てみましょう-

public class Demo{
   public static void test(){
      System.out.println("Demo class test function has been called");
   }
   public static void test(int val){
      System.out.println("Demo class test function with parameter has been called");
   }
   public static void main(String args[]){
      System.out.println("In the main class, Demo functions being called");
      Demo.test();
      Demo.test(57);
   }
}

出力

In the main class, Demo functions being called
Demo class test function has been called
Demo class test function with parameter has been called

Demoという名前のクラスには、特定のメッセージを出力する「test」という名前の関数が含まれています。また、パラメータとして整数値を使用する「test」という名前の別の関数も定義します。関連するメッセージは関数本体の中に表示されます。 main関数では、テスト関数はパラメーターなしで整数パラメーター付きで呼び出されます。関連するメッセージがコンソールに表示されます。

Javaの静的メソッドはオーバーライドできません。同じシグネチャを持つ静的メソッドはサブクラスで定義できますが、実行時のポリモーフィズムにはなりません。したがって、オーバーライドすることはできません。これが例です-

class base_class{
   public static void show(){
      System.out.println("Static or class method from the base class");
   }
   public void print_it(){
      System.out.println("Non-static or an instance method from the base class");
   }
}
class derived_class extends base_class{
   public static void show(){
      System.out.println("Static or class method from the derived class");
   }
   public void print_it(){
      System.out.println("Non-static or an instance method from the derived class");
   }
}
public class Demo{
   public static void main(String args[]){
      base_class my_instance = new derived_class();
      System.out.println("Base class instance created.");
      my_instance.show();
      System.out.println("Function show called");
      my_instance.print_it();
      System.out.println("Function print_it called");
   }
}

出力

Base class instance created.
Static or class method from the base class
Function show called
Non-static or an instance method from the derived class
Function print_it called

基本クラスには、メッセージを出力する「show」という名前の静的関数があります。同様に、「print_it」という名前の別の関数がメッセージを表示します。クラスは、2つの関数を継承する基本クラスから派生します。 Demoという名前のクラスには、派生型クラスの基本クラスのインスタンスを作成するmain関数が含まれています。関連するメッセージがコンソールに表示されます。


  1. 列挙型はJavaの任意のクラスを拡張できますか?

    Javaの列挙(enum)は、定数値のセットを格納するデータ型です。列挙型を使用して、1週間の日数、1年の月数などの固定値を格納できます。 キーワードenumの後に列挙型の名前を-として使用して、列挙型を定義できます。 enum Days {    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY } 配列と同様に、列挙型の要素/定数は、上記の例では0から始まる番号を使用して識別されます。日は、次の図に示すように番号を使用して識別されます- 列挙型はクラスに似ており、変数、メソッド、コン

  2. JavaでJTextFieldにパディングを追加するにはどうすればよいですか?

    JTextField JTextComponentのサブクラスです クラスであり、ユーザーが単一行形式でテキスト値を入力できるようにする最も重要なコンポーネントの1つです。 。 JTextFieldクラスは、 ActionListenerを生成します 内部に入力を入力しようとしたときのインターフェイス。 JTextFieldクラスの重要なメソッドは、 setText()、getText()、setBorder()、setEnabled()、です。 など setMargin(Insets s)を使用して、JTextFieldにパディングを追加できます JTextComponent ク