JAvaの初認識abstractキーワード--

7363 ワード

abstractキーワード
abstractキーワードは抽象的な意味で、書かれた内容には抽象的な概念があります
使用法(唯二):
1.abstract修飾クラス
書式:abstract classクラス名{}抽象クラスは参照タイプのみを宣言し、オブジェクトを作成できない、すなわち抽象クラスをインスタンス化できないため、抽象クラスはマルチステートでオブジェクトを作成するために使用されます.
抽象クラスはfinalによって修飾されず,finalによって修飾されたクラスは継承できないが,抽象クラスはサブクラスの継承によって抽象メソッドを実現(書き換える)し,矛盾を生じる.
        :
 -    
 -   
 -   
 -     
 -     :
 -     

継承中の抽象クラス:
1.クラスに抽象メソッドがある場合、このクラスは抽象クラスでなければなりません.抽象クラスには抽象メソッドがあるとは限りません.2.サブクラスが抽象メソッドを継承する場合、親クラスの抽象メソッドが継承され、子クラスが抽象クラスになりたくない場合、子クラスは親クラスで宣言されたすべての抽象メソッドを実装(すなわち上書き)する必要があります.
注:抽象クラスは抽象オブジェクトを作成できませんが、サブクラスオブジェクトを作成するときにコンストラクタがロードされるコンストラクションメソッドを持つことができます.
abstractクラスには一般的な方法があります.クラスに継承され、メソッドを上書きできます.サブクラスはsuper呼び出しメソッドabstractクラスとインタフェースに同名のメソッドがある場合、サブクラスに重複する抽象クラスメソッドを書き換えるには、インタフェースの重複メソッドは操作されません.
2.abstract修飾方法
書式:
public abstract void method();

抽象メソッドは宣言のみであり,メソッド体はなく,すなわち実現していない.
抽象メソッドはprivateによって修飾できません.抽象メソッドはクラスによって実装されなければならないため(抽象メソッドは書き換えられます)、privat権限はサブクラスに対してアクセスできないため、矛盾します.
抽象メソッドはstaticによって修飾されない.staticによって修飾されるため、クラス名で直接呼び出すことができるが、抽象メソッドは主体を実現せず、意味がない.
抽象クラスと抽象メソッドの浅い認識:
動物は1つの類で、この類はあまりにも特殊で、万象を網羅しています:猫は動物で、犬も動物で、ネズミは動物などです;この類の中で、一部の動物は多くの共通性を持っている:食べる、寝る、活動など、これらの動作は方法として定義することができるが、動物ごとに実現は確かに異なるので、私たちはこれらの共通性のある方法を抽象方法と定義した.抽象的な動物類の中で、抽象的な方法を持っていることを宣言し、共通性の動作を方法名として抽出し、正確にどのように実現するかは規定されていない.実現類はそれぞれの特性に基づいて書き換える方法である:動物はすべて食べることができて、動物たちが食べる動作の内容はそれぞれ異なって、続いて抽象類である実体類を継承して抽象方法を覆うことができて、猫が魚を“食べる”ことを実現して、犬が肉を“食べる”ことを実現して、ネズミが米を“食べる”ことを実現します.
次はデモ
abstract class Animal{
    abstract void eat();
}
class Dog extends Animal{
    @Override
    void eat() {
        System.out.println("dog eat meat");
    }
}
class Cat extends Animal{
    @Override
    void eat() {
        System.out.println("cat eat fish");
    }
}
class Mouse extends Animal{
    @Override
    void eat() {
        System.out.println("mouse eat rice");
    }
}

テストクラス:
public class TestDemo {
    public static void main(String[] args) {
        Animal[] animals={
                new Dog(),
                new Cat(),
                new Mouse()
        };
        for (int i = 0; i <animals.length; i++) {
            animals[i].eat();
        }
    }
}