Javaでオーバーライドするメソッド
オーバーライドとは、サブクラスタイプに固有の動作を定義する機能です。つまり、サブクラスは、その要件に基づいて親クラスのメソッドを実装できます。
オブジェクト指向の用語では、オーバーライドとは、既存のメソッドの機能をオーバーライドすることを意味します。
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があるため、プログラムは正しくコンパイルされます。次に、実行時に、そのオブジェクトに固有のメソッドを実行します。
-
Javaメソッドのオーバーライドのルール
メソッドを適切にオーバーライドする際に考慮すべきルールは次のとおりです- 引数リストは、オーバーライドされたメソッドの引数リストとまったく同じである必要があります。 戻り型は、スーパークラスの元のオーバーライドされたメソッドで宣言された戻り型と同じか、サブタイプである必要があります。 アクセスレベルは、オーバーライドされたメソッドのアクセスレベルよりも制限することはできません。例:スーパークラスメソッドがパブリックとして宣言されている場合、サブクラスのオーバーライドメソッドをプライベートにすることも保護することもできません。 インスタンスメソッドは、サブクラスに継承されている場合にのみオーバ
-
JavaでtoString()メソッドをオーバーライドする目的
toString()の目的は何ですか Javaのメソッド? クラスのオブジェクトを文字列として表現する場合は、toString()を使用できます。 オブジェクトのテキスト表現を返すメソッド。 オブジェクトを出力すると、デフォルトでJavaコンパイラがtoString()を呼び出します。 オブジェクトのメソッド。したがって、toString()をオーバーライドすることによって メソッドでは、意味のある出力を提供できます。 次の例でこの概念を見てみましょう: toString()メソッドのオーバーライド package io.devqa.tutorials; public class T