21_ Javaオブジェクト指向インターフェース(インターフェース)

インタフェースの概要

この方法は、抽象クラスを定義し、インターフェイスインターフェイスことを表すために別のフォームを使用することができ、抽象クラスの抽象メソッドである場合。そして、インタフェース、クラスの配列は、クラスが同じレベルの抽象概念です。

インタフェースは、「抽象クラス」も「抽象的」と「抽象クラス」、それはより標準化することができるサブクラス制約よりも優れています。包括的な専門家は達成:仕様と実装の特定の分離を。

抽象クラスは、すべてのメソッドが抽象的インターフェイスのインターフェイスは、任意の実装を提供していない、いくつかの特定の実装を提供します。インタフェースは、完全に配向されているクラスの所定数の指定は、パブリックメソッドの仕様を有します。

実装の観点から、インターフェイス、インターフェイスは外部に提供することができるサービスを定義します。

発呼者インタフェースの観点から、インタフェースは、これらのサービスを提供するための実装を定義します。

インタフェース仕様は、2つのモジュール、通信との間の通信のための規格です。あなたはシステムの概略設計の完了に相当モジュール間の明確に定義されたインタフェース間のシステムを設計することができるようにしたい場合は、残りの部分は、具体的な現実のビルディングブロックです。システムは、多くの場合、システムを設計するために、「インターフェイス指向」の考え方を使用して行われているとき、彼らは、将来的に働きます。

あなたはトランスポートを定義するとき、私は抽象クラスの車、車、飛行機、電車の定義されたサブクラスを定義します。問題ありません。一般と特別な関係の抽象クラスとサブクラス。

彼が達成し、サブクラスの関係規則どのようなインターフェイス、。例えば:私はインターフェイスのRunnableを定義し、車はそれが地面上で実行することができます達成するため、列車の実現は地面上で実行することができます。また、地上のランニングに航空機を達成することができます。それは彼が車であれば、我々は実行することができます、で、我々はRunnableを実装する必要があります。あなたはそれがFlightableインタフェースを達成しなければならない空を飛びたい場合は、Fligntable:私はインターフェイスを定義します。

2.定義インタフェース

キーワードは、クラス定義されたインタフェースではありませんが、変更のインタフェースを持ちます。

[実施例]定義されたインターフェース

interface 接口名 [extends 父接口1, 父接口2,] { 
	// 常量定义
	// 方法定义
}

宣言はまだ.classファイルを生成しますinterfaceキーワードを使用してコンパイルされた後がまだの.javaファイルには、インタフェースが存在を定義します。これは、インターフェイスに私たちを可能にするだけで特別なクラスの関数宣言と見られて含まれています。

注:使用多重継承缶がインタフェースを拡張!インタフェースは、インスタンス化することはできません!

インタフェースの構成は次のとおりです。

インタフェースは、属性を定義した:グローバル静的定数は、最終的なデフォルトのpublic staticを修正するために、に属しています。

インタフェースで定義された方法:JDK1.8で前に、抽象デフォルトのパブリック変更するために、すべての抽象メソッドです、

JDK1.8後、インターフェースは、通常の静的メソッドおよび修飾デフォルトメンバメソッドを含むことができます。

[インタフェースの例組成

public interface Flyable {
	// 属性:默认为全局静态属性
	/*public static final*/ double MAX_HEIGHT = 8000;
	// 方法:JDK1.8以前默认为抽象方法
	/*public abstract*/ void fly(); 
	// JDK1.8之后还可以包含静态方法和default修饰的成员方法
	public static void showInfo1() {}
	default void showInfo2() {}
}

注:インターフェイスはメンバ変数の初期化を必要としないので、あなたは、コンストラクタのインタフェースを持つことはできません。

インターフェイスを実装する3。

継承関係は、クラス間拡張するクラスと実装インタフェースとの間の関係を達成することです。

インタフェースフォーマット:

class 实现类 [extends 父类] implements 接口 {
	// 重写接口中的方法
}

クラスが実装インタフェースた後、抽象クラスは、抽象メソッドのクラスが完全に特定のロジックに、書き換える必要がある、方法インタフェース継承されます。

[例]実装インタフェース

// 接口
interface Flyable {
	// 建议不要省略,以提高阅读性
	/*public abstract*/ void fly(); 
}
// 实现类
class Bird implements Flyable{
	public void fly() {
		System.out.println("鸟儿在天空自由的飞翔");
	}
}
// 测试类
public class Test {
	public static void main(String[] args) {
		Bird bird = new Bird();
		bird.fly();
	}
}

注意事項:

  1. サブクラスは、サブクラスをインスタンス化することができ、インターフェイスのすべての抽象メソッドを実装します。

  2. 抽象メソッドインタフェースの場合のみ、部分的サブクラスは、サブクラスをインスタンス化できない抽象クラスです!

4.マルチ実装インタフェース

問題ではありませんインターフェースの特性を理解し、あなたは、あなたがインターフェイスを定義したい理由について考え、記述した抽象クラスを使用して、エンドそれにインターフェースを暗く?インターフェイスは完全にマルチ実現をサポートし、類似したクラスの継承、実装クラスは複数のインタフェースを実装することができ、すべてのインタフェースが定義されます。

Javaでは、クラスは、クラスを継承することができますが、多重継承や機能の効果を得ることができ、また多重継承のリスクを回避するために、両方、同時に複数のインタフェースを実装することができます。

[例]インタフェースの場合よりも達成するために

// 父类
class Person {
	String name;
	public void eat() {}
}
// 接口
interface Runner {
	public abstract void run();
}
interface Flyer {
	public abstract void fly();
}
// Student类,既继承Person类,又实现Runner和Flyer接口
class Student extends Person implements Runner, Flyer {
	@Override
	public void fly() {
		System.out.println("Student fly方法");
	}
	@Override
	public void run() {
		System.out.println("Student run方法");
	}
}

抽象クラスとインタフェースとの間の差

唯一のインタフェースと抽象クラスの違いを理解し、あなたは知ることができたときにインターフェースの選択、抽象クラスの選択。

インターフェイスは、抽象クラスが抽象的ルーツである、アクションの抽象的です。抽象化のレベル(高→低):インタフェース > 抽象> 一般カテゴリー。

インターフェース:人が食べることができ、犬が食べることができ、我々は「食べる」ことができ、これらのカテゴリーは、それを達成するために聞かせて、インターフェイスとして定義されます。

抽象クラス:人々は属性の名前と年齢を持っているだけでなく、行動を食べ、犬は属性の名前と年齢を持っているだけでなく、行動を食べて、私たちは「同じ属性と行動」を置くことができる抽象クラスで定義され、その後、これらのクラスは、これを継承してみましょう抽象クラス。

同じポイント:

  1. 常にインスタンス化されていない、来るまで描かれています。

  2. これは、抽象メソッドが含まれていますが、具体的な実装を提供しません。

違い:

  1. 抽象クラスは、拡張継承する必要があり、単一継承のみ。

    インターフェイスは実装を実装する必要がある、とより多くを達成することができます。

  2. また、静的変数を定義することができます抽象クラスのメンバ変数を定義することができます。

    インターフェースで定義された変数は、デフォルトでは、グローバル静的定数(変性パブリック静的決勝)です。

  3. 抽象クラスのコンストラクタを定義することができ、サブクラスコール抽象クラスのメンバ変数の割り当てを容易にします。

    インタフェースは、メンバ変数を初期化する必要がないため、インターフェイスは、コンストラクタメソッドを定義することはできません!

  4. 抽象クラスは、従来の方法で定義することができ、また、抽象メソッド(abstrct)を定義することができます。

    JDK1.8も静的メソッドを定義することができた後、インターフェイスJDK1.8前に、あなただけの、抽象メソッド(パブリックabstrct)を定義することができます。

  5. 継承は、記載されたシステムの実質的に共通のコンテンツを定義する関係する抽象クラス「です」。

    関係定義されたシステム外のための追加の行為に記載のインタフェースの実装は、「似ています」。

6.指向プログラミング・インターフェース

指向プログラミング・インターフェースは、オブジェクト指向プログラミングの一部です。

なぜ指向プログラミング・インタフェース?ソフトウェアの設計は、需要の複雑な変更を処理するのが最も困難であり、需要の変化は、より実装に反映します。特定の実装を中心に展開する当社のプログラミングの海が「複雑な変更」に分類されます場合は、ソフトウェアは最終的に実現されることはありません。私たちは質の高いプロジェクトの標準を達成し、不作為への安定的なもののいくつかの並べ替えを持ち歩く必要があります。

インターフェースが標準化され、プロジェクトは最も安定したものです!指向プログラミング・インターフェースは、私は物事の本当の核心を把握することができ、複雑かつ多様なニーズの実装が可能となります。スケーラビリティと保守指向プログラミングインターフェースによってではなく、実装クラス指向プログラミング、大幅にシステム全体を改善する、プログラム・モジュールとの間の結合を減少させることができます。

コンセプト指向プログラミング・インターフェースは、インターフェースのコンセプト自体よりもはるかに大きいです。あなたは良いインターフェイスを達成するためにそれを書いていないとき、困難な設計、変更のためのインタフェースが実現よりも設計が困難、間違っていました!インターフェイスは非常に簡単ですが、どのように実際に使用するために自分自身を構文?彼は大学を尋ねています。私たちは、私たちが理解することができる、後のプロジェクトで再利用する必要があります。ここで学んだ、基本的な文法に精通し、基本的な概念を理解し、それは優秀な生徒です。

PS:最新の無料のマニュアルと教育ビデオの場合は、QQグループ(627407545)を追加してください受けます。

公開された55元の記事 ウォンの賞賛0 ビュー787

おすすめ

転載: blog.csdn.net/zhoujunfeng121/article/details/104619464