Access Analysis
 

アクセス解析 - 抽象クラスとインターフェイスで[ZTの]のjava

これらの2つのメカニズムの存在は、それは強力なオブジェクト指向のJava機能を与えるための抽象クラスとインターフェイスは2つのメカニズムの定義をサポートするためにJava言語のための抽象クラスですが、正確に。抽象クラスの定義のための抽象クラスとインターフェイスのサポートの間に、よりカジュアルな表情を選択するための抽象クラス抽象クラスとインターフェイスの定義中の開発者の非常によく似ても、交換可能なので、たくさん持っている。実際には、間に2つは、その選択は、設計意図と合理的な正しい理解のための問題領域の性質の理解を反映であっても、まだ大きな差が。。
ホームページ制作業者への見積もり&比較が簡単に出来る!Neutrals×ホームページ制作ガイド
抽象クラスの理解
抽象クラスは、インターフェイス、Java言語で(この記事は、抽象クラスからの翻訳抽象クラスからのものではない抽象クラスに使用されて、それは抽象クラスにする方法を定義するために使用するJava言語、読者のために抽象化し、抽象クラスを表します定義されている区別は)ですが、次に何を抽象クラスは、抽象クラスを使用すると、私たちに何か良いをもたらすことができますか?
オブジェクト指向の概念では、すべてのオブジェクトは、クラスによって記述されているが、順番に、知っているケースではありません。クラスは、特定のオブジェクトを記述するための十分な情報が含まれていない場合はすべてのクラスは、オブジェクトを記述するために使用されている、このクラスは抽象クラスです。。。。。
オブジェクト指向のフィールドは、抽象クラスのタイプは、主に非表示にするために使用される。我々は動作の抽象的な記述の固定セットを、その振る舞いはこのグループの構築可能性のある具体的な実装のいずれかの番号を持つことができます。この抽象的な記述は、抽象クラス、および可能なすべての派生クラスの性能を可能な具体的な実現の任意の数のこのグループです。。モジュールが固定された抽象化に依存しているためので、変更を許可することができます、しかし、同時に、この抽象化から派生して拡張、このモジュールの機能も動作。のOCP(オープンクローズド原則)は、抽象クラスは、キーのいずれかの読者は、OCPに精通してためにほとんどのオブジェクト指向設計の基本原則の一つを達成することを知っている必要があります。




構文レベルでは、抽象クラスとインターフェイスの定義については、Java言語が異なっていて説明するデモの例と呼ばれる次の抽象クラスを定義するためにさまざまな方法が与えられている。
方法は、デモは次のように抽象クラス抽象クラスの定義を使用する:




abstract void method1();
abstract void method2();



interface Demo {
void method1();
void method2();

}
。ある意味では、インターフェイスは、抽象クラスの特殊な形式です。。
抽象クラスとインターフェイスとまでは言わないが、詳細レベルではなく、この記事の焦点の構文の問題で定義されては、読者はリファレンス〔1〕にさらに関連したコンテンツを参照することができます。

プログラミングの観点から、抽象クラスとインターフェイスは"契約による設計"のアイデアを実装するために使用することができます。しかし、そこ上記の特定の用途はいくつかの違いがあります。
。ただし、クラスは複数のインターフェイスを実装することができます。おそらくこれは、妥協はそれを考慮すると、多重継承のJavaサポートを検討するためのJava言語の設計者です。
。。
。。ただし、インターフェイスは、抽象クラスを介して実現されている場合、あなただけすることができ、デフォルトの動作が定義されている抽象クラスを変更する必要があります。
抽象クラスは、デフォルトの動作を定義することができない場合同様に、それは"一つのルール、一つの場所"の各違反コードの重複の結果、原則、同じもののための派生クラスで抽象クラスの同じメソッドの実装につながる将来のメンテナンスを助長されていない。。
パースペクティブデザインとインタフェースの抽象クラスから
上記の構文は、プログラミングは、抽象クラスとインタフェースの違いについての観点を中心に、これらのレベルの違いは、不要な比較的低いレベルである。。著者が両方の概念の本質を理解し、分析するには、このレベルから考えている。
前述したように、Java言語でabstarctクラスは、合理的な継承の間に存在する必要があります親クラスおよび派生クラスを作成するために、関係の連続を具現化で、親クラスと派生クラスです関係"です。"自然の概念は、(リファレンス〔徹底的な議論との関係は、関心のある読者を参照することができます素晴らしいの長さ"です"についての3〕)で同一である必要があります。。。


abstract class Door {
abstract void open();
抽象的な空に近い();
}
インターフェイスのドアを使用して定義する:
interface Door {
void open();
void close();
}
。大きな違いは抽象クラスとインターフェイスのように見える。
あなたがドアを求めている場合は、アラーム機能を持っています。。
解決方法1:
ドアアラームメソッドの定義の単純な増加は、次のように:
abstract class Door {
abstract void open();

abstract void alarm();
}

interface Door {
void open();
void close();
void alarm();
}

class AlarmDoor extends Door {
void open() { … }
void close() { … }
void alarm() { … }
}

クラスAlarmDoorは{ドアを実装しています
void open() { … }
void close() { … }
void alarm() { … }
}
。その変動は、副:(メソッドは、アラームのパラメータを変更するなど)この問題は、誰が"アラーム"変化の概念のドアモジュールのコンセプトに頼って、これらによって引き起こされる。
ソリューションⅡ:
。定義は次のとおりです:二つの概念は、抽象クラスのメソッドを使用して定義されています。この二つの概念は意味のインターフェイスを使用して定義されている、抽象クラスを使用しての概念を定義する方法、もう一つの方法は、インターフェイスを使用しての概念を定義する。
明らかに、Java言語では多重継承をサポートしていないため、2つの概念が実現されていない抽象クラスのアプローチを使用して定義されている。2つの方法はしかし、実現可能であるの背後にある選択が反映するように設計さ自然の理解のための問題領域の概念に反映されている、正しい、合理的な。。

問題領域の理解場合です:それは、アラーム機能を有している間AlarmDoor概念、基本的にドアが。どのように我々はそれを意味する特定の反映させるために、実装を設計するつもりですか?既にJava言語では、抽象クラスに述べたように、継承、継承は本質的には、れているときは、関係"です。"。。加えて、AlarmDoorはまた、アラームの動作の概念の定義を完了できることを示す、アラーム機能を持っているので、アラームの概念は、インターフェイスを介して定義することができます。次のように:
abstract class Door {
abstract void open();

}
interface Alarm {
void alarm();
}
class AlarmDoor extends Door implements Alarm {
void open() { … }
void close() { … }
void alarm() { … }
}
この実装は、基本的に我々の問題領域の明確な理解を反映することができる、右私たちのデザインの意図を明らかにする。実際には、抽象クラスであることの関係"のような"その関係は、インターフェイス、我々は、基底の選択には、もちろん、などの問題領域の理解に基づいていること"です":場合私たちは、AlarmDoorは、本質的にアラームの概念だと思いますまた、上記の定義が判明し、次に、ドアの機能を有している。
結論
。。これは、実際の言語使用の一種ですが、私は、読者が友人を感じることを願って。
04:12
ビッグメロン

登録日:2001 Nov
投稿者:北京

非常に洞察力に富んだ記事。私はより一般的な例を追加したい。
抽象クラス(抽象クラス):家庭用電化製品(HomeAlliances)
インターフェイス(インターフェイス):ボリューム調整(VolumeControlに)

テレビを達成するための方法:
pulbic class TV extends HomeAlliances implements VolumeControl{
}
メソッドは、マシン(洗濯機のボリュームコントロール機能を持っていない)洗濯達成するために:
public class Washing extends HomeAlliances{
}