工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java メソッドのオーバーライド

Java メソッドのオーバーライド

このチュートリアルでは、例を使って Java でのメソッドのオーバーライドについて学びます。

前回のチュートリアルでは、継承について学びました。継承は、既存のクラス (スーパークラス) から新しいクラス (サブクラス) を派生させることを可能にする OOP プロパティです。サブクラスは、スーパークラスの属性とメソッドを継承します。

ここで、スーパークラスとサブクラスの両方で同じメソッドが定義されている場合、サブクラス クラスのメソッドがスーパークラスのメソッドをオーバーライドします。これは、メソッドのオーバーライドとして知られています。


例 1:メソッドのオーバーライド

class Animal {
   public void displayInfo() {
      System.out.println("I am an animal.");
   }
}

class Dog extends Animal {
   @Override
   public void displayInfo() {
      System.out.println("I am a dog.");
   }
}

class Main {
   public static void main(String[] args) {
      Dog d1 = new Dog();
      d1.displayInfo();
   }
}

出力 :

I am a dog.

上記のプログラムでは、 displayInfo() メソッドは Animal の両方に存在します スーパークラスと サブクラス。

displayInfo() を呼び出すとき d1 を使用して object (サブクラスのオブジェクト)、サブクラス Dog 内のメソッド と呼ばれます。 displayInfo() サブクラスのメソッドは、スーパークラスの同じメソッドをオーバーライドします。

@Override の使用に注意してください この例の注釈。 Java では、注釈はコンパイラに情報を提供するために使用したメタデータです。ここでは、@Override アノテーションは、このアノテーションの後のメソッドがスーパークラスのメソッドをオーバーライドするコンパイラを指定します。

@Override の使用は必須ではありません .ただし、これを使用する場合、メソッドはオーバーライドのすべての規則に従う必要があります。それ以外の場合、コンパイラはエラーを生成します。


Java オーバーライド ルール


Java オーバーライドの super キーワード

Java でオーバーライドを実行しているときに発生する一般的な質問は次のとおりです。

オーバーライド後にスーパークラスのメソッドにアクセスできますか?

そうですね、答えははいです .サブクラスからスーパークラスのメソッドにアクセスするには、 super を使用します キーワード。

例 2:super キーワードの使用

class Animal {
   public void displayInfo() {
      System.out.println("I am an animal.");
   }
}

class Dog extends Animal {
   public void displayInfo() {
      super.displayInfo();
      System.out.println("I am a dog.");
   }
}

class Main {
   public static void main(String[] args) {
      Dog d1 = new Dog();
      d1.displayInfo();
   }
}

出力 :

I am an animal.
I am a dog.

上記の例では、サブクラス Dog メソッド displayInfo() をオーバーライドします スーパークラス Animal の .

メソッド displayInfo() を呼び出すと、 d1 を使用して のオブジェクト サブクラス、Dog 内のメソッド サブクラスが呼び出されます。スーパークラス内のメソッドは呼び出されません。

displayInfo()の サブクラス、super.displayInfo() を使用しました displayInfo() に電話する スーパークラスの。


Java のコンストラクターは継承されないことに注意することが重要です。したがって、Java ではコンストラクターのオーバーライドなどはありません。

ただし、サブクラスからスーパークラスのコンストラクターを呼び出すことができます。そのために、super() を使用します。 .詳細については、Java スーパー キーワードにアクセスしてください。


メソッドのオーバーライドにおけるアクセス指定子

スーパークラスとそのサブクラスで宣言された同じメソッドは、異なるアクセス指定子を持つことができます。ただし、制限があります。

これらのアクセス指定子は、スーパークラスのアクセス指定子よりも大きなアクセスを提供するサブクラスでのみ使用できます。たとえば、

メソッド myClass() があるとします。 スーパークラスでは protected と宣言されています .次に、同じ方法 myClass() サブクラスでは public のいずれかになります または protected 、ただし private ではありません .

例 3:オーバーライドのアクセス指定子

class Animal {
   protected void displayInfo() {
      System.out.println("I am an animal.");
   }
}

class Dog extends Animal {
   public void displayInfo() {
      System.out.println("I am a dog.");
   }
}

class Main {
   public static void main(String[] args) {
      Dog d1 = new Dog();
      d1.displayInfo();
   }
}

出力 :

I am a dog.

上記の例では、サブクラス Dog メソッド displayInfo() をオーバーライドします スーパークラス Animal の .

displayInfo() を呼び出すたびに d1 を使用して (サブクラスのオブジェクト)、サブクラス内のメソッドが呼び出されます。

displayInfo() protected と宣言されています 動物で スーパークラス。同じメソッドには public があります Dog のアクセス指定子 サブクラス。 public protected よりも大きなアクセスを提供します .


抽象メソッドのオーバーライド

Java では、抽象クラスは他のクラスのスーパークラスとして作成されます。また、クラスに抽象メソッドが含まれている場合は、それをオーバーライドすることが必須です。

後のチュートリアルで、抽象クラスと抽象メソッドのオーバーライドについて詳しく学びます。


Java

  1. Java オペレーター
  2. Java try-with-resources
  3. Java アノテーション
  4. Java アノテーション タイプ
  5. Java の String Length() メソッド:例で見つける方法
  6. 部分文字列と例を含む Java String indexOf() メソッド
  7. Java String charAt() メソッドと例
  8. Java String compareTo() メソッド:例での使用方法
  9. Java String contains() メソッド |部分文字列を例でチェック
  10. 例を使用したJava文字列のendsWith()メソッド
  11. Java 文字列 replace()、replaceAll() および replaceFirst() メソッド