Educoder–Java第1関門:学習-Java継承と多態の方法書き換え

8592 ワード

文書ディレクトリ
  • タスク記述
  • 関連知識
  • プログラミング要件
  • 試験説明
  • 回答
  • タスクの説明
    このタスク:CatクラスのtoStringメソッドを書き換え、Catクラスの基本情報を返します.
    関連知識
    子クラスで親クラスと同じ名前、同じ戻り値タイプ、同じパラメータリストのメソッドを作成した場合、メソッドボディの内容が異なるだけで、親クラスとは異なる機能を実現します.この方法はメソッド書き換え(override)と呼ばれ、メソッドオーバーライドとも呼ばれます.書き換えは、サブクラスが親クラスのアクセスを許可するメソッドの実装プロセスを再記述し、戻り値もパラメータも変更できません.親クラスのメソッドが子クラスのニーズを満たすことができない場合、または子クラスが特有の機能を持っている場合、メソッド書き換えが必要です.
    サブクラスは、必要に応じて、独自のメソッドを定義できます.親の機能名を踏襲するとともに、子の必要に応じて親メソッドを再実装し、拡張を強化します.
    メソッドを書き換えるには、次のルールに従う必要があります.
  • パラメータリストは、書き換えられた方法パラメータリストと完全に同じでなければならない.
  • で返されるタイプは、書き換えられたメソッドの戻りタイプと同じでなければならない(Java 1.5バージョン以前の戻り値タイプは同じでなければならず、その後のJavaバージョンは制限を緩和し、戻り値タイプは親メソッドの戻り値タイプ以下でなければならない).
  • アクセス権は、親クラスで書き換えられたメソッドのアクセス権よりも低くすることはできません(public>protected>default>private).
  • 書き換え方法は、必ず新しい検査異常または書き換え方法の宣言よりも広い検査型異常を投げ出すことはできない.たとえば,親クラスの1つのメソッドがチェック異常IOExceptionを宣言しているが,このメソッドを書き換えるとExceptionを投げ出すことができず,IOExceptionの子クラス異常のみを投げ出すことができ,非チェック異常を投げ出すことができる.

  • また、以下の項目に注意してください.
  • 書き換え方法は@Override注記を使用して識別することができる.
  • 親クラスのメンバーメソッドは、その子クラスによってのみ書き換えられます.
  • finalとして宣言された方法は書き換えられない.
  • staticと宣言する方法は書き換えられないが、再宣言することができる.
  • の構造方法は書き換えられない.
  • 子クラスと親クラスが同じパッケージにある場合、privateとfinalとして宣言されたメソッドを除いて、子クラスは親クラスのすべてのメソッドを書き換えることができます.
  • 子クラスと親クラスが同じパッケージにない場合、子クラスはpublicとprotectedと宣言された非finalメソッドのみを書き換えることができます.
  • メソッドを継承できない場合は、このメソッドを書き換えることはできません.

  • 例:
      class Animal{
            //    info   ,      
            public void info(){
                System.out.println("    ");
            }
        }
        class Dog extends Animal{
            //       info   ,        
            @Override
            public void info(){
                System.out.println("    ");
            }
        }
        public class DemoTest{
            public static void main(String[] args) {
                Dog dog = new Dog();
                dog.info();
            }
        }
    

    実行結果:
        
    

    プログラミング要件
    右側の編集領域で与えられたコードフレームワークと注釈をよく読んで、ヒントに従ってプログラムコードを書きます.
    テストの説明
    プラットフォームはテストセットを使用して作成したプログラムコードを実行し、すべての実行結果が正しい場合はクリアします.右側の「テスト結果」セクションで、特定のテストセットの詳細を表示できます.
    答え
    /**
     *   :   Cat     toString   ,   Cat       。
     */
    class Animal{
        private String name; //     
        private int age; //     
    	
    	//           
        public String toString() {
            return "Anaimal{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
    public class Cat extends Animal{
        private String name; //      
        private int age; //     
    
        public Cat(String name, int age) {
            this.name = name;
            this.age = age;
        }
        //      Begin-End                   
        /********* Begin *********/
        //    Anaimal    toString   ,      String,  :      xx   ,  xx  
            @Override
        public String toString() {
            return "      "+name+"   ,  "+age+"  ";
        }
    
        /********** End **********/
    }