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

Java-オーバーライド

前の章では、スーパークラスとサブクラスについて話しました。クラスがそのスーパークラスからメソッドを継承する場合、メソッドが final とマークされていなければ、メソッドをオーバーライドする可能性があります。

オーバーライドの利点は、サブクラスの型に固有の動作を定義できることです。これは、サブクラスがその要件に基づいて親クラスのメソッドを実装できることを意味します。

オブジェクト指向の用語では、オーバーライドは既存のメソッドの機能をオーバーライドすることを意味します。

例を見てみましょう。

ライブデモ
class Animal {
   public void move() {
      System.out.println("Animals can move");
   }
}

class Dog extends Animal {
   public void move() {
      System.out.println("Dogs can walk and run");
   }
}

public class TestDog {

   public static void main(String args[]) {
      Animal a = new Animal();   // Animal reference and object
      Animal b = new Dog();   // Animal reference but Dog object

      a.move();   // runs the method in Animal class
      b.move();   // runs the method in Dog class
   }
}

これにより、次の結果が生成されます-

出力

Animals can move
Dogs can walk and run

上記の例では、b Animal の一種で、Dog クラスの move メソッドを実行します。その理由は次のとおりです。コンパイル時に、参照型でチェックが行われます。ただし、実行時に、JVM はオブジェクト タイプを判断し、その特定のオブジェクトに属するメソッドを実行します。

したがって、上記の例では、Animal クラスにメソッド move があるため、プログラムは正しくコンパイルされます。次に、実行時に、そのオブジェクトに固有のメソッドを実行します。

次の例を検討してください-

ライブデモ
class Animal {
   public void move() {
      System.out.println("Animals can move");
   }
}

class Dog extends Animal {
   public void move() {
      System.out.println("Dogs can walk and run");
   }
   public void bark() {
      System.out.println("Dogs can bark");
   }
}

public class TestDog {

   public static void main(String args[]) {
      Animal a = new Animal();   // Animal reference and object
      Animal b = new Dog();   // Animal reference but Dog object

      a.move();   // runs the method in Animal class
      b.move();   // runs the method in Dog class
      b.bark();
   }
}

これにより、次の結果が生成されます-

出力

TestDog.java:26: error: cannot find symbol
      b.bark();
       ^
  symbol:   method bark()
  location: variable b of type Animal
1 error

b の参照型 Animal には bark という名前のメソッドがないため、このプログラムはコンパイル時エラーをスローします。

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

super キーワードの使用

オーバーライドされたメソッドのスーパークラス バージョンを呼び出すと、スーパー キーワードが使用されています。

ライブデモ
class Animal {
   public void move() {
      System.out.println("Animals can move");
   }
}

class Dog extends Animal {
   public void move() {
      super.move();   // invokes the super class method
      System.out.println("Dogs can walk and run");
   }
}

public class TestDog {

   public static void main(String args[]) {
      Animal b = new Dog();   // Animal reference but Dog object
      b.move();   // runs the method in Dog class
   }
}

これにより、次の結果が生成されます-

出力

Animals can move
Dogs can walk and run

Java

  1. Java オペレーター
  2. Java インターフェイス
  3. Java try-with-resources
  4. Java の String Length() メソッド:例で見つける方法
  5. 部分文字列と例を含む Java String indexOf() メソッド
  6. Java String charAt() メソッドと例
  7. Java String compareTo() メソッド:例での使用方法
  8. Java String contains() メソッド |部分文字列を例でチェック
  9. 例を使用したJava文字列のendsWith()メソッド
  10. Java 文字列 replace()、replaceAll() および replaceFirst() メソッド
  11. Javaの静的変数:静的ブロック&メソッドとは【例】