Java学習ノート3――継承

2394 ワード

継承
  • 継承の利点:サブクラスは親クラスのすべての属性と方法を持ち、peivate修飾は無効です.コード多重化を実現する
  • class    extends   
      : class Dog extends Animal{
                 ......
    }
      :
    package com.imooc;
    public class Animal {
     public int age;
     public String name;
     public void eat(){
      System.out.println("       ");
     }
    }
      :
    package com.imooc;
    public class Dog extends Animal {
    }
       :
    package com.imooc;
    public class Initail {
     public static void main(String[] args) {
      // TODO Auto-generated method stub
            Dog dog = new Dog();
            dog.age = 10;
            dog.name = "xiaohui";
            dog.eat();
     }
    }

    書き換える
  • メソッド書き換え:サブクラスは親継承メソッドを書き換えることができ、呼び出しメソッドがサブクラスを優先的に呼び出すメソッド
  • を書き換えることができる.
  • 構文規則:a:戻り値タイプb:メソッド名c:パラメータタイプおよび個数は、親継承メソッドと同じでなければ、メソッド書き換え
  • と呼ばれません.
      Dog :
    package com.imooc;
    public class Dog extends Animal {
     public void eat(){
      System.out.println("  "+age+"       ");
     }
    }

    3.継承された初期化順序:1)親を初期化して子を初期化する2)初期化オブジェクトの属性を先に実行し、構築方法の初期化を実行する
    Javaでのfinalの使用
  • final最終的には、修正できないという意味です.finalはクラス、メソッド、プロパティ、変数を修飾できます.final修飾クラスは、そのクラスが継承されることを許さない.修飾方法は、この方法を書き換えてはならない.属性を修飾すると、クラス属性は暗黙的に初期化されません(クラス初期化属性には値が必要です)、または構築方法に値が割り当てられます(ただし、その1つのみ選択できます).finalが変数を修飾すると、その変数の値は一度しか与えられない値、すなわち定数になります.

  • Javaでのsuperの使用
  • super:親オブジェクト
  • を表すオブジェクト内で使用
  • 親オブジェクトにアクセスするプロパティ:super.age; 親オブジェクトへのアクセス方法:super.eat()
  • superの応用:1)サブクラスの構造中にその親の構造方法を呼び出さなければならない場合、システムはデフォルトで親の無参の構造方法を呼び出し、super()を暗黙的に呼び出す.2)子クラスの構築方法に明示的に親を呼び出す構造方法がなく、親クラスにパラメータのない構築方法がない場合、コンパイルエラーが発生し、子クラスの構築方法の最初の行にsuper()を加える必要がある.

  • JavaのObjectクラス
    1.Objectクラスはすべてのクラスの親であり、あるクラスがextendsを使用して別のクラスを継承していない場合、このクラスはデフォルトでObjectクラスを継承します.Objectクラスのメソッドはすべてのサブクラスに適しています.
    1)toString():オブジェクトのハッシュコードを返し、toString()メソッドを書き換えることでオブジェクトの属性を表すことができます.EclipseにはtoString()を自動的に書き換える方法があり、Eclipse->Source->Generate toString()
    2)equals():オブジェクトの参照が同じメモリDog dog=new Dog()を指すかどうかを比較します.
    一般的には、2つのオブジェクトを比較する場合は、彼の値が一致しているかどうかを比較するので、書き換えます.
    Eclipse->Source->Generate hashCode() and equals()
    書き換え後、2つのオブジェクトの値が同じかどうかを比較します.
    public boolean equals(Object obj) {
      if (this == obj)
       return true;
      if (obj == null)
       return false;
      if (getClass() != obj.getClass())
       return false;
      Dog other = (Dog) obj;
      if (age != other.age)
       return false;
      return true;
     }