Java基礎------知識点整理(七)-----インターフェース
2811 ワード
1.抽象的な方法が抽象的な方法である場合、これは別の形式で定義し、表現することができる。 ------------ インターフェース(キーワード : インターフェース)は、定義するときにクラスを使わない
例:
インターフェースの修飾方法:public abstract ......
以上の2つの形式は固定されています。abstractコンパイラを一つだけ書いても自動的に追加してくれますが、このフォーマットに従って完全に書いたほうがいいです。
2.類と類の間は継承関係である
クラスとインターフェースの間は関係を実現するのです。
インターフェースとインターフェースの間は継承関係です。
3.javaでは直接多継承をサポートできません。同じ関数を呼び出す不確実性があります。しかし、javaは複数のインターフェースを実現できます。これはインタフェースの中の方法が抽象的で、たとえ親A、Bの中に同じ関数名があっても、具体化されていないので、誰を使っても同じです。不確実性が発生しません。 フォーマットは以下の通りです
同じ点:抽象的な方法があります。
違い点:
(1)抽象類は継承が必要であり、しかも単に継承するしかない
インターフェースは実現される必要があります。
(2)抽象類では、抽象的な方法と非抽象的な方法が定義され、サブクラスが継承された後、直接に非抽象的な方法が使用されます。
インターフェースは抽象的な方法しか定義できません。サブクラスで実現しなければなりません。
(3)抽象類の継承は is-a 関係は、そのシステムの基本的な共通性を定義する内容である。
インターフェースの実現時 like-a 関係は、システムの追加機能を定義します。
5.抽象的なものはいつ使いますか?インターフェースはいつ使いますか?
(1)一つのクラスの方法は抽象を必要とするが、比較的大きな抽象主体として、いくつかの一般的な方法があり、この場合は抽象を用いる
(2)インターフェースは拡張機能として機能していますので、中の方法が少なく、全部抽象的な場合、インターフェースを使って、インターフェースを拡張機能に重視します。
原則:抽象の中の方法はこの類の体系の中で最も根本的な属性で、インターフェースは更に1種の付加的な機能のようです。
6.
また、特定のクラスと複数のインターフェースを組み合わせる場合、この具体的なクラスは前に置かなければなりません。後に続くのがインターフェースです。そうでなければ、コンパイルエラーが発生します。
7.インターフェースを使う二つの核心原因
(1)複数のベースタイプにアップグレードできるようにするため(及びこれによる柔軟性)
(2)抽象ベースクラスを使用するのと同じである:クライアントプログラマがこのクラスのオブジェクトを作成するのを防ぐ
8.インターフェースを組み合わせる時の名前の衝突
例:
interface Demo{
public abstract final int NUM=1;//
public abstract void show(); //
}
インターフェースの修飾変数:public abstract final ...... インターフェースの修飾方法:public abstract ......
以上の2つの形式は固定されています。abstractコンパイラを一つだけ書いても自動的に追加してくれますが、このフォーマットに従って完全に書いたほうがいいです。
2.類と類の間は継承関係である
クラスとインターフェースの間は関係を実現するのです。
インターフェースとインターフェースの間は継承関係です。
3.javaでは直接多継承をサポートできません。同じ関数を呼び出す不確実性があります。しかし、javaは複数のインターフェースを実現できます。これはインタフェースの中の方法が抽象的で、たとえ親A、Bの中に同じ関数名があっても、具体化されていないので、誰を使っても同じです。不確実性が発生しません。 フォーマットは以下の通りです
class C implements A,B{ // A B ,A B
coding .....
}
4.抽象類とインターフェースの異同点同じ点:抽象的な方法があります。
違い点:
(1)抽象類は継承が必要であり、しかも単に継承するしかない
インターフェースは実現される必要があります。
(2)抽象類では、抽象的な方法と非抽象的な方法が定義され、サブクラスが継承された後、直接に非抽象的な方法が使用されます。
インターフェースは抽象的な方法しか定義できません。サブクラスで実現しなければなりません。
(3)抽象類の継承は is-a 関係は、そのシステムの基本的な共通性を定義する内容である。
インターフェースの実現時 like-a 関係は、システムの追加機能を定義します。
5.抽象的なものはいつ使いますか?インターフェースはいつ使いますか?
(1)一つのクラスの方法は抽象を必要とするが、比較的大きな抽象主体として、いくつかの一般的な方法があり、この場合は抽象を用いる
(2)インターフェースは拡張機能として機能していますので、中の方法が少なく、全部抽象的な場合、インターフェースを使って、インターフェースを拡張機能に重視します。
原則:抽象の中の方法はこの類の体系の中で最も根本的な属性で、インターフェースは更に1種の付加的な機能のようです。
6.
public interface A{
public void abstract a();
}
public interface B{
public void abstract b();
}
public class C{
public void a(){ syso “aaaaa”;}
}
public class D extends C implements A,B{
public void b( syso("bbbbb"));
}
Cにはa方法がありますので、Cを継承する時はa方法があります。つまりA方法を実現する必要はありません。また、特定のクラスと複数のインターフェースを組み合わせる場合、この具体的なクラスは前に置かなければなりません。後に続くのがインターフェースです。そうでなければ、コンパイルエラーが発生します。
7.インターフェースを使う二つの核心原因
(1)複数のベースタイプにアップグレードできるようにするため(及びこれによる柔軟性)
(2)抽象ベースクラスを使用するのと同じである:クライアントプログラマがこのクラスのオブジェクトを作成するのを防ぐ
8.インターフェースを組み合わせる時の名前の衝突
interface I1{ void f(); }
interface I2{ int f(int i);}
interface I3{ int f();}
class C { public int f() { return 1 ;}}
class C2 implements I1,I2{ // , ,
public void f(){}
public int f(int i){return 1;}
}
class C3 extends C implements I2{ // ,
public int f(int i){ return 1;}
}
class C4 extends C implements I3{ // , , C ,
public int f(){ return 1;}
}
// ! class C5 extends C implements I1{} //C f() I1 f() ( , ), I1 f()
//! interface I4 extends I1, I3 {} // I1 I3 , , 。
8.優先的な選択類はインターフェースではなく、インターフェースを乱用しないでください。ただのツールです。