[A]章XVIII抽象クラスの定義と使用:
基本的な概念抽象クラス:
クラスの主な役割は、機能を拡張することができ、既存の継承しますが、継承を見つけるのは難しいことではありません前に、サブクラスは、あなたが自分のニーズに応じて、特定のメソッドを上書きするかどうかを決めることができ、かつ親が強制することはできません。この時間は、サブカテゴリーを作成します意思決定(あなたがメソッドの一部をオーバーライドする必要があります)。
この時間は、多くの場合である(実際の開発では、あるだろうのようなサウンドを継承している少数は、クラス内で直接使用することができますが、抽象クラスを拡張する必要があります)、クラス継承、後で親クラスのデザインを使用していません、私たちの優先順位は、抽象クラスでなければなりません。
主な効果は、抽象クラス上書き従来の方法のサブクラスは、方法は、規則を実装する抽象クラスに抽象的に定義することができることです
抽象クラスは、主に抽象キーワード定義を使用する方法を参照し、メソッド本体を提供していない、クラスの抽象メソッドが抽象クラスでなければならない場合、抽象クラスは、抽象的でなければならない(追加のキーワードに基づいて一般的なカテゴリには、抽象メソッドが抽象定義クラス)。
例:抽象クラスを定義する方法
抽象 クラスメッセージ { プライベート文字列型、 パブリック 抽象ストリングgetConnectInfo(); //は抽象クラス定義 公共 ボイド(はsetTypeを){ この .TYPE = タイプ; } パブリック文字列のgetType(){ // 一般的な方法は 戻り 、この; .TYPEを } }
抽象クラスの原則を使用します。
サブクラスを提供しなければならない抽象クラスは、サブクラスが継承する抽象クラスを拡張します。
抽象クラス(抽象的ではない)抽象クラスの抽象メソッドのサブクラスは全て上書きされます。
抽象オブジェクト・クラスは、上向きの遷移によって達成オブジェクトサブクラス多型を使用してインスタンス化することができます。
例:
抽象 クラスメッセージ { プライベート文字列型、 パブリック 抽象ストリングgetConnectInfo(); //は抽象クラス定義 公共 ボイドはsetType(文字列型){ この .TYPE = タイプ; } パブリック文字列のgetTypeを(){ // 一般的な方法は 戻り 、この.TYPEと、 } } クラスメッセージ延びDatebaseMessage { @Override パブリックストリングgetConnectInfo(){ 戻り 「Oracleデータベース・メッセージ・ロードを.... 」。 } } パブリック クラスTSY { 公共 静的 ボイドメイン(文字列[]引数) { メッセージMGR = 新しい新しいDatebaseMessage(); //アップキャスト抽象クラスインスタンス mgr.setType(" クライアント・メッセージ" ) 。システムOUTの.println(MGR .getConnectInfo()) 。システムOUT .println(mgr.getType()); } }
抽象クラスと抽象メソッドの面で全体としては唯一の一般的なカテゴリより必須オーバーライドサブカテゴリ方法を増加させました。
抽象クラスの利用に関する意見:
1.抽象クラスを使用し、主にコアの問題である:彼らは直接インスタンス化できないという抽象クラス。
抽象クラス2の中で運転の主な目的は、過度の使用はあるので、あなたは、開発のための抽象クラスを使用する場合、多くの場合、あなたのコードクラスの設計で対処する必要が繰り返し処理に起因する問題を継承