漫談Java言語のインタフェースとタイプセキュリティ
インタフェースは、コンポーネントの挿入性を実現する鍵であり、挿入可能なコンポーネントの鍵は、共通のインタフェースが存在し、各コンポーネントがこのインタフェースを実現することにある.Java言語のインタフェースに関する知識を紹介します.
インタフェースとは?
Javaのインタフェースは一連のメソッドの宣言であり、いくつかのメソッド特徴の集合であり、1つのインタフェースはメソッドの特徴だけでメソッドの実装がないため、これらのメソッドは異なる場所で異なるクラスで実装することができ、これらの実装は異なる動作(機能)を持つことができる.
インタフェースの2つの意味:
一、Javaインタフェース、Java言語に存在する構造、特定の文法と構造がある.
二、一つのクラスが持つ方法の特徴集合は、論理的な抽象である.
前者を「Javaインタフェース」、後者を「インタフェース」と呼ぶ.
Java言語仕様では、1つのメソッドの特徴は、メソッドの名前、パラメータの数、および種類のみを含み、メソッドの戻りタイプ、パラメータの名前、および投げ出された異常は含まれません.Javaコンパイラでメソッドのリロードをチェックすると、これらの条件に基づいて2つのメソッドがリロードメソッドであるかどうかを判断します.ただし、Javaコンパイラがメソッドの置き換えをチェックすると、2つのメソッド(スーパータイプとサブタイプに分かれている)の返却タイプと放出された例外が同じかどうかをさらにチェックします.
インタフェースの継承と継承を実現するルールは異なり、1つのクラスには直接親が1つしかありませんが、複数のインタフェースを実現できます.
Javaインタフェース自体は実装されていません.Javaインタフェースは表象に関与せず、public動作のみを記述するため、JavaインタフェースはJava抽象クラスよりも抽象化されています.
Javaインタフェースの方法は抽象的で公開的であるしかなく、Javaインタフェースにはコンストラクタがありません.Javaインタフェースにはpublic、静的、final属性があります.
インタフェースはメソッドの特徴とメソッドの実現を分割する.このような分割は、インタフェースが常に1つのロールを代表し、そのロールに関連する操作と属性を包装し、このインタフェースを実現するクラスは、このロールを演じる俳優である.1つの役は異なる俳優によって演じられるが、異なる俳優の間では共通の役を演じる以外に、他の共通点は要求されない.
なぜインタフェースを使用しますか?
2つのクラスの2つの類似の機能は、彼らのクラスの動的な決定の実装を呼び出し、抽象的な親クラスを提供し、サブクラスはそれぞれ親クラスが定義した方法を実現します.
問題の発生:Javaは単一継承言語であり、一般的に、どの特定のクラスにスーパークラスがあるか、その親に親を追加するか、またはその親の親に親を追加し、クラス階層の最上位に移動するかを解決します.これにより,1つの特定のクラスに対する挿入性の設計は,階層全体のすべてのクラスに対する修正となる.
インタフェースは挿入性の保証です.
1つの階層内の任意のクラスでは、このようなすべてのサブクラスに影響しますが、このようなスーパークラスには影響しません.このようなインタフェースによって規定された方法を実装しなければならないが、そのサブクラスは、これらの方法を自動的に継承することができ、もちろん、これらの方法をすべて置換するか、またはその中のいくつかの方法を選択することができ、この場合、これらのサブクラスは挿入性を有する(そして、このインタフェースタイプでマウントし、実装されたすべてのサブクラスを伝達することができる).
私たちが関心を持っているのは、その具体的なクラスではなく、このクラスが私たちに必要なインタフェースを実現しているかどうかです.
インタフェースは関連性とメソッド呼び出しの挿入性を提供し、ソフトウェアシステムの規模が大きいほど、ライフサイクルが長くなり、インタフェースはソフトウェアシステムの柔軟性と拡張性、挿入性の面で保証される.
を選択します.
Javaインタフェースを使用して、ソフトウェア単位を内部および外部に結合します.Javaインタフェースを使用すると、変数のタイプ宣言、メソッドの返却タイプ宣言、パラメータのタイプ宣言、およびデータ型の変換は、特定のクラスではありません.
理想的には、1つの具体的なJavaクラスは、Javaインタフェースおよび抽象Javaクラスで宣言されたメソッドのみを実現し、余分なメソッドを与えるべきではない.
タイプ階層
Javaインタフェース(および抽象クラス)は、一般的に、クラス構造の開始点として使用されます.
クラスに主要なスーパータイプがすでに存在する場合、インタフェースを実装することによって、このクラスは別のサブスーパータイプを持つことができ、このサブスーパータイプをブレンドタイプと呼ぶ.
Javaインタフェースの一般的な方法
シングルメソッドインタフェース
このインタフェース(このインタフェースの唯一のメソッドを書き換える)を実装してこそ、イベントリスナーリストに登録する資格があり(パラメータはActionlistenerタイプ)、イベントソースが変動すると、この唯一のactionPerformedメソッドを自動的に呼び出すことができる.
インタフェースの識別
メソッドやプロパティがないインタフェースです.識別インタフェースは、実装されたクラスが特定のタイプ(伝達)に属していることを示すだけで、実装されたクラスに意味的な要件はありません.
識別インタフェースの使用はあまり推奨されません.
定数インタフェース
Javaインタフェースで定数を宣言し、このインタフェースを実現するクラスがこれらの定数を使用します(以前は画板を作ったときにやったことがあります).このような定数インタフェースのやり方を真似しないことをお勧めします.
Java言語型セキュリティの問題
Javaは強いタイプの言語です.これは、Javaコンパイラがコードをチェックして、値が割り当てられていないことを決定し、メソッドの呼び出しがタイプに合致していることを意味します.Javaコンパイラでは、一致しない場合にエラーが発生します.
タイプチェックは、各変数の宣言がこの変数にタイプを与えるという簡単な事実に基づいています.各メソッドがコンストラクタを含む宣言は、このメソッドの特徴を与える.これにより、Javaコンパイラは任意の式に対して明らかなタイプを推定することができ、Javaコンパイラは明らかなタイプに基づいてタイプを検査することができる.
Java言語はタイプが安全です.つまり、Javaコンパイラに受け入れられる合法的なJavaクラスの保証はタイプセキュリティです.すなわち、プログラムの実行中に、エラーのタイプはありません.1つのJavaプログラムでは、もともと1つのタイプに属する変数を別のタイプとして処理することはできません.そのため、エラーは発生しません.
簡単に言えば、Java言語は3つのメカニズムによってタイプセキュリティを実現した:コンパイル期間のタイプチェック、自動ストレージ管理、配列の境界チェック.
注:本編の大部分の内容は閻宏先生の「Javaとモード」です.
インタフェースとは?
Javaのインタフェースは一連のメソッドの宣言であり、いくつかのメソッド特徴の集合であり、1つのインタフェースはメソッドの特徴だけでメソッドの実装がないため、これらのメソッドは異なる場所で異なるクラスで実装することができ、これらの実装は異なる動作(機能)を持つことができる.
インタフェースの2つの意味:
一、Javaインタフェース、Java言語に存在する構造、特定の文法と構造がある.
二、一つのクラスが持つ方法の特徴集合は、論理的な抽象である.
前者を「Javaインタフェース」、後者を「インタフェース」と呼ぶ.
Java言語仕様では、1つのメソッドの特徴は、メソッドの名前、パラメータの数、および種類のみを含み、メソッドの戻りタイプ、パラメータの名前、および投げ出された異常は含まれません.Javaコンパイラでメソッドのリロードをチェックすると、これらの条件に基づいて2つのメソッドがリロードメソッドであるかどうかを判断します.ただし、Javaコンパイラがメソッドの置き換えをチェックすると、2つのメソッド(スーパータイプとサブタイプに分かれている)の返却タイプと放出された例外が同じかどうかをさらにチェックします.
インタフェースの継承と継承を実現するルールは異なり、1つのクラスには直接親が1つしかありませんが、複数のインタフェースを実現できます.
Javaインタフェース自体は実装されていません.Javaインタフェースは表象に関与せず、public動作のみを記述するため、JavaインタフェースはJava抽象クラスよりも抽象化されています.
Javaインタフェースの方法は抽象的で公開的であるしかなく、Javaインタフェースにはコンストラクタがありません.Javaインタフェースにはpublic、静的、final属性があります.
インタフェースはメソッドの特徴とメソッドの実現を分割する.このような分割は、インタフェースが常に1つのロールを代表し、そのロールに関連する操作と属性を包装し、このインタフェースを実現するクラスは、このロールを演じる俳優である.1つの役は異なる俳優によって演じられるが、異なる俳優の間では共通の役を演じる以外に、他の共通点は要求されない.
なぜインタフェースを使用しますか?
2つのクラスの2つの類似の機能は、彼らのクラスの動的な決定の実装を呼び出し、抽象的な親クラスを提供し、サブクラスはそれぞれ親クラスが定義した方法を実現します.
問題の発生:Javaは単一継承言語であり、一般的に、どの特定のクラスにスーパークラスがあるか、その親に親を追加するか、またはその親の親に親を追加し、クラス階層の最上位に移動するかを解決します.これにより,1つの特定のクラスに対する挿入性の設計は,階層全体のすべてのクラスに対する修正となる.
インタフェースは挿入性の保証です.
1つの階層内の任意のクラスでは、このようなすべてのサブクラスに影響しますが、このようなスーパークラスには影響しません.このようなインタフェースによって規定された方法を実装しなければならないが、そのサブクラスは、これらの方法を自動的に継承することができ、もちろん、これらの方法をすべて置換するか、またはその中のいくつかの方法を選択することができ、この場合、これらのサブクラスは挿入性を有する(そして、このインタフェースタイプでマウントし、実装されたすべてのサブクラスを伝達することができる).
私たちが関心を持っているのは、その具体的なクラスではなく、このクラスが私たちに必要なインタフェースを実現しているかどうかです.
インタフェースは関連性とメソッド呼び出しの挿入性を提供し、ソフトウェアシステムの規模が大きいほど、ライフサイクルが長くなり、インタフェースはソフトウェアシステムの柔軟性と拡張性、挿入性の面で保証される.
を選択します.
Javaインタフェースを使用して、ソフトウェア単位を内部および外部に結合します.Javaインタフェースを使用すると、変数のタイプ宣言、メソッドの返却タイプ宣言、パラメータのタイプ宣言、およびデータ型の変換は、特定のクラスではありません.
理想的には、1つの具体的なJavaクラスは、Javaインタフェースおよび抽象Javaクラスで宣言されたメソッドのみを実現し、余分なメソッドを与えるべきではない.
タイプ階層
Javaインタフェース(および抽象クラス)は、一般的に、クラス構造の開始点として使用されます.
クラスに主要なスーパータイプがすでに存在する場合、インタフェースを実装することによって、このクラスは別のサブスーパータイプを持つことができ、このサブスーパータイプをブレンドタイプと呼ぶ.
Javaインタフェースの一般的な方法
シングルメソッドインタフェース
- public interface Actionlistener(){
- public abstract void actionPerformed(ActionEvent event);
- }
このインタフェース(このインタフェースの唯一のメソッドを書き換える)を実装してこそ、イベントリスナーリストに登録する資格があり(パラメータはActionlistenerタイプ)、イベントソースが変動すると、この唯一のactionPerformedメソッドを自動的に呼び出すことができる.
インタフェースの識別
メソッドやプロパティがないインタフェースです.識別インタフェースは、実装されたクラスが特定のタイプ(伝達)に属していることを示すだけで、実装されたクラスに意味的な要件はありません.
識別インタフェースの使用はあまり推奨されません.
定数インタフェース
Javaインタフェースで定数を宣言し、このインタフェースを実現するクラスがこれらの定数を使用します(以前は画板を作ったときにやったことがあります).このような定数インタフェースのやり方を真似しないことをお勧めします.
Java言語型セキュリティの問題
Javaは強いタイプの言語です.これは、Javaコンパイラがコードをチェックして、値が割り当てられていないことを決定し、メソッドの呼び出しがタイプに合致していることを意味します.Javaコンパイラでは、一致しない場合にエラーが発生します.
タイプチェックは、各変数の宣言がこの変数にタイプを与えるという簡単な事実に基づいています.各メソッドがコンストラクタを含む宣言は、このメソッドの特徴を与える.これにより、Javaコンパイラは任意の式に対して明らかなタイプを推定することができ、Javaコンパイラは明らかなタイプに基づいてタイプを検査することができる.
Java言語はタイプが安全です.つまり、Javaコンパイラに受け入れられる合法的なJavaクラスの保証はタイプセキュリティです.すなわち、プログラムの実行中に、エラーのタイプはありません.1つのJavaプログラムでは、もともと1つのタイプに属する変数を別のタイプとして処理することはできません.そのため、エラーは発生しません.
簡単に言えば、Java言語は3つのメカニズムによってタイプセキュリティを実現した:コンパイル期間のタイプチェック、自動ストレージ管理、配列の境界チェック.
注:本編の大部分の内容は閻宏先生の「Javaとモード」です.