Javaキーワードのabstract(抽象類の概念と使用)

4362 ワード

1、概説(1)方法の定義だけを与えて具体的に実現しない方法を抽象的な方法と呼び、抽象的な方法は方法体がないので、コードの表現には「{}」がない.abstract修飾子を使用して、抽象的な方法と抽象的なクラスを表します.(2)abstract修飾子は、修飾されたクラスが完全に実現されておらず、まだ実用化されていないことを示しています.クラスの方法声明でabstract修飾子を使用する場合、この方法は抽象的な方法であり、サブクラスで実現する必要があることを示している.一つのクラスが抽象的な方法を含むなら、このクラスも抽象的な類であり、abstract修飾子を使用しなければならず、また実用化できない.(3)抽象類は抽象的な方法を含む以外に、具体的な変数と具体的な方法を含むことができることに注意してください.抽象的な方法が含まれていなくても、抽象的なものとして宣言され、実用化されないようにすることができます.
2、抽象類の特徴(1)抽象類は具体化できない.つまり、new演算子を使ってはいけない.(2)クラスの中に一つ以上のabstract方法がある場合、クラスはabstractとして宣言しなければならない.(3)抽象類の中の方法は必ずしもすべてabstract方法ではなく、1つ以上の具体的な方法を含むこともできる.(4)一つのクラスに抽象的な方法が含まれていなくても、抽象的なクラスとして宣言できます.(5)抽象類における抽象的な方法を使用するには、すべての抽象的な方法をサブクラスから複写した後、サブオブジェクトの呼び出しを確立しなければならない.(6)サブクラスが抽象的な部分だけをカバーしている場合、サブクラスはまだ抽象的なタイプである.
3、どのような場合、抽象類(1)類を使って明確な声明を含む抽象的な方法.(2)類のいずれかの父親類は、実現されていない抽象的な方法を含む.(3)類の直接父インターフェース宣言または抽象的な方法を継承しており、このクラスは声明していないか、またはこの抽象的な方法を実現していない.
4、コード展示の抽象類は実用化されず、抽象的な方法はサブクラスで実現されなければならない.下のコードを見てください.
import static java.lang.System.*;
public final class Demo{
    public static void main(String[] args) {
        Teacher t = new Teacher();
        t.setName("  ");
        t.work();

        Driver d = new Driver();
        d.setName("  ");
        d.work();
    }
}
//        
abstract class People{
    private String name;  //     

    //     setter   getter   
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return this.name;
    }

    //     
    public abstract void work();
}
class Teacher extends People{
    //        
    public void work(){
        out.println("     " + this.getName() + ",   ...");
    }
}
class Driver extends People{
    //        
    public void work(){
        out.println("     " + this.getName() + ",   ...");
    }
}
/*
    :
       ,   ...
       ,   ...
*/
5、抽象類についてのいくつかの説明(1)抽象類は直接使用できないので、サブクラスで抽象類を実現し、そのサブクラスの実例を使用しなければならない.しかし、変数を作成することができます.このタイプは抽象的なクラスであり、具体的なサブクラスの一例を指すようにします.つまり、抽象的なクラスを使用して、イメージ参として働くことができます.(2)構造関数と静関数およびfinal修飾の関数はabstract修飾子を使用できない.(3)抽象クラスのインスタンスを作成しようとすると、コンパイルエラーが発生します.(4)一つのクラスが抽象的ではないが、一つの抽象的な方法を含んでいると、コンパイルエラーが発生します.(5)抽象類には構造関数がある.抽象クラスが親の場合、サブクラスにインスタンスの初期化を提供する必要があります.
6、abstractキーワードとどのキーワードが共存できないですか?final:finalに修飾されている類にはサブクラスがありません.abstractに修飾されたクラスはきっと父の種類です.prvate:抽象的な私有の抽象的な方法は、布団類に知られていないと、書き換えられない.抽象的な方法の出現のは複写される必要があります.static:もしstaticが抽象的な方法を修飾することができるならば、対象さえ省きました.直接類名で呼んでください.でも、抽象的な方法は実行しても意味がないです.