Javaインタフェース、抽象クラス
6535 ワード
このセクションでは、「Javaインタフェース、抽象クラス」について説明します.
インタフェース
開発者間のコード約定を作成します.複数の体現体から共通の部分を抽象化する.(多形性)Javaインタフェースは基本的に抽象メソッドの集合である.抽象的な方法とは、実施部がない方法である. クラス 一般クラス=エンティティークラス
エンティティーに表示されるクラス=>は特定のものであるため、オブジェクトを作成できます. 抽象クラス
エンティティクラスの共通部分を抽出し、一定の仕様を決定した抽象クラス=>メソッドとコンテンツは抽象的であるため、オブジェクトを生成できません.
インタフェースとは、極端に同じ目的で同じ機能を強制的に実行することを意味し、これはインタフェースの役割と概念である.すなわち,インタフェースを用いてJavaの多様性を最大化し,開発コードの修正を低減し,プログラムのメンテナンス性を向上させる. (例)
スマートフォンメーカーAは数十億ウォンを投入し、雑誌1社のカメラをスマートフォンに取り付け、1000台程度の製品を製造した.しかし問題が発生した.雑志1社のカメラは连続撮影できない…!結局、スマートフォンメーカーAは優秀な2社のカメラで雑誌1社のカメラを全面的に交換することにした.でも.ああ...なんてことだ.雑誌1社のカメラの撮影モジュールに特化した番組です.すなわち,優れた2社のカメラに交換するためには,プログラムを書き直し,システムを構築する必要がある.撮影モジュールを共通の規格に適合したモジュールに開発すれば、このようなメンテナンス性の不便が生じず、互換性が向上する.要するに、メーカーに同じ機能を提供させ、異なるカメラでも撮影できるのが「インターフェース」です. 構文
インタフェースの場合、=>すべてのメソッドは抽象メソッドです.
インタフェースはinterfaceというキーワードで宣言したり、implementsキーワードで一般クラスでインタフェースを実現したりすることができます.
抽象クラスとは、Aクラス、Bクラス、Cクラスがある場合、各クラスにそれぞれのフィールドとメソッドがあります.抽象クラスは,Aクラス,Bクラス,Cクラス間で類似したフィールドとメソッドが共に抽出されたクラスである.すなわち,抽象クラスは階層継承関係を持つクラスの構造を作成するのに適している.
(例の状況)
「キーボードというレベルがあります」「キーボード」のメーカーはいくつもあります.Aメーカー、Bメーカー、Cメーカーはそれぞれのスタイルでキーボードを作り、消費者に製品を発売している.違いがあるとすれば、Aメーカーは押すたびにライトアップされ、Bメーカーは押すたびにカチカチと音を立てて遊んでいるわけではありません.Cメーカーは身長がいいです.ここで,これらのキーボード間の共通点は「キーボードを押す」動作である.つまり、方法は共通です.このメソッドを抽出して抽象クラスに入れればよいので,キーボードを継承し,Aキーボード,Bキーボード,Cキーボードを生成する.
まだ感じてないの?簡単にまとめると3種類にまとめることができます. 汎用フィールドとメソッドを統合する目的で、メンテナンス性を向上させることができます. エンティティークラスの実装は時間を節約します.
すなわち,強制的に与えられたフィールドやメソッドを用いて,独自のスタイルで実現すればよい.設計時間を節約し、実装に専念できます.(それ以外に、抽象クラスはアプリケーションアーキテクチャ(AA)によって設計される.) 規格に適合するエンティティクラスを実現するために、
「これは2回目の節約とあまり差がありません.」「自分のスタイルで実現する」ということは、思うように実現できるということではありません.すなわち、「規格」内での実施が認められる.重要なのは、ソースを変更するときに、他のソースの影響度を低減し、抽象クラスを使用して柔軟に変更することです.仕様によってソースコードが実施されているので、該当仕様の実施部を修正すれば簡単に修正できる.(オブジェクト(Java)向けのソリッド設計の原則を知っている場合は、この点は分かりやすいです.)
構文
抽象クラスの場合、少なくとも1つの=>抽象メソッド、またはキーワードabstractとして定義されます.
抽象メソッド
メソッドのタイプ、名前、パラメータのリスト、および宣言されたが実装されていないコードとして宣言されるメソッド、すなわち、シェルのみのメソッド、抽象キーワードを宣言する必要があります.
オブジェクト(インスタンス)を作成できません.
紹介セクションでは紹介したが,抽象クラスにはコードを実行するかどうかの抽象的な方法がある可能性があるため,抽象クラスのオブジェクトを生成できないことが制限されている.ただし,抽象クラスのクラスを継承することでインスタンス化できる.
サブクラス
抽象クラスを継承するサブクラスは祖先クラスの抽象メソッドを継承し,抽象クラスとなる.したがって、サブクラスの前にabstractキーワードを使用して抽象クラスであることを示す必要があります.また、すべての開発者は、抽象クラスで宣言されたすべての抽象メソッドをサブクラスで実装する必要があります.抽象クラスを本のディレクトリと呼ぶと,サブクラスはディレクトリに基づいて作成された実際の本と同じである.本を書くときにディレクトリを設定すると、本を書くのが簡単になり、スピードが速くなり、方向が乱れないように、抽象クラスを使用してアプリケーションの設計と実現を分けることができます.抽象クラスでデフォルトの方向を決定し、サブクラスで実装すると、実装作業が容易になります.
抽象クラスにはジェネレータがあり、アクセス指定子(public、protected、default、private)は任意のタイプであってもよい.
継承クラスまたは実装インタフェース内の抽象メソッドを強制的に実装します.
目的の相違があるインタフェース
インタフェースには、関数を強制的に実装するための関数のハウジングが1つしかありません.強制的に実装することで、実装オブジェクトと同じ動作を保証できます.(使用時間:継承関係が別の祖先クラスにアップグレードされた場合、同じ機能が必要な場合) 抽象クラス
抽象クラスを継承して機能を利用し、拡張します.(使用時間:継承関係に沿って上に進む場合は、同じ祖先クラスを継承する必要があり、完全に同じ機能も必要です)
参考資料 インタフェース 抽象クラス インタフェース、抽象クラスの比較
紹介する
開発者間のコード約定を作成します.複数の体現体から共通の部分を抽象化する.(多形性)Javaインタフェースは基本的に抽象メソッドの集合である.抽象的な方法とは、実施部がない方法である.
エンティティーに表示されるクラス=>は特定のものであるため、オブジェクトを作成できます.
エンティティクラスの共通部分を抽出し、一定の仕様を決定した抽象クラス=>メソッドとコンテンツは抽象的であるため、オブジェクトを生成できません.
インタフェースとは?
スマートフォンメーカーAは数十億ウォンを投入し、雑誌1社のカメラをスマートフォンに取り付け、1000台程度の製品を製造した.しかし問題が発生した.雑志1社のカメラは连続撮影できない…!結局、スマートフォンメーカーAは優秀な2社のカメラで雑誌1社のカメラを全面的に交換することにした.でも.ああ...なんてことだ.雑誌1社のカメラの撮影モジュールに特化した番組です.すなわち,優れた2社のカメラに交換するためには,プログラムを書き直し,システムを構築する必要がある.撮影モジュールを共通の規格に適合したモジュールに開発すれば、このようなメンテナンス性の不便が生じず、互換性が向上する.要するに、メーカーに同じ機能を提供させ、異なるカメラでも撮影できるのが「インターフェース」です.
インタフェースの場合、=>すべてのメソッドは抽象メソッドです.
インタフェースはinterfaceというキーワードで宣言したり、implementsキーワードで一般クラスでインタフェースを実現したりすることができます.
public interface 인터페이스명 {
타입 상수명 = 값; //상수
타입 메소드명(매개변수, ... ); //추상 메소드
default 타입 메소드명(매개변수, ... ){
//구현부
} //디폴트 메소드
static 타입 메소드명(매개변수) {
//구현부
} //정적 메소드
}
抽象クラスとは?
抽象クラスとは、Aクラス、Bクラス、Cクラスがある場合、各クラスにそれぞれのフィールドとメソッドがあります.抽象クラスは,Aクラス,Bクラス,Cクラス間で類似したフィールドとメソッドが共に抽出されたクラスである.すなわち,抽象クラスは階層継承関係を持つクラスの構造を作成するのに適している.
(例の状況)
「キーボードというレベルがあります」「キーボード」のメーカーはいくつもあります.Aメーカー、Bメーカー、Cメーカーはそれぞれのスタイルでキーボードを作り、消費者に製品を発売している.違いがあるとすれば、Aメーカーは押すたびにライトアップされ、Bメーカーは押すたびにカチカチと音を立てて遊んでいるわけではありません.Cメーカーは身長がいいです.ここで,これらのキーボード間の共通点は「キーボードを押す」動作である.つまり、方法は共通です.このメソッドを抽出して抽象クラスに入れればよいので,キーボードを継承し,Aキーボード,Bキーボード,Cキーボードを生成する.
まだ感じてないの?簡単にまとめると3種類にまとめることができます.
すなわち,強制的に与えられたフィールドやメソッドを用いて,独自のスタイルで実現すればよい.設計時間を節約し、実装に専念できます.(それ以外に、抽象クラスはアプリケーションアーキテクチャ(AA)によって設計される.)
「これは2回目の節約とあまり差がありません.」「自分のスタイルで実現する」ということは、思うように実現できるということではありません.すなわち、「規格」内での実施が認められる.重要なのは、ソースを変更するときに、他のソースの影響度を低減し、抽象クラスを使用して柔軟に変更することです.仕様によってソースコードが実施されているので、該当仕様の実施部を修正すれば簡単に修正できる.(オブジェクト(Java)向けのソリッド設計の原則を知っている場合は、この点は分かりやすいです.)
構文
抽象クラスの場合、少なくとも1つの=>抽象メソッド、またはキーワードabstractとして定義されます.
public abstract class 클래스명{
//필드
//생성자
//메서드
//추상메서드
}
抽象メソッド
メソッドのタイプ、名前、パラメータのリスト、および宣言されたが実装されていないコードとして宣言されるメソッド、すなわち、シェルのみのメソッド、抽象キーワードを宣言する必要があります.
[public / protected] abstract 리턴타입 메소드명(매개변수1, 매개변수2, ... );
オブジェクト(インスタンス)を作成できません.
紹介セクションでは紹介したが,抽象クラスにはコードを実行するかどうかの抽象的な方法がある可能性があるため,抽象クラスのオブジェクトを生成できないことが制限されている.ただし,抽象クラスのクラスを継承することでインスタンス化できる.
추상클래스명 ab = new 클래스명();
サブクラス
抽象クラスを継承するサブクラスは祖先クラスの抽象メソッドを継承し,抽象クラスとなる.したがって、サブクラスの前にabstractキーワードを使用して抽象クラスであることを示す必要があります.また、すべての開発者は、抽象クラスで宣言されたすべての抽象メソッドをサブクラスで実装する必要があります.抽象クラスを本のディレクトリと呼ぶと,サブクラスはディレクトリに基づいて作成された実際の本と同じである.本を書くときにディレクトリを設定すると、本を書くのが簡単になり、スピードが速くなり、方向が乱れないように、抽象クラスを使用してアプリケーションの設計と実現を分けることができます.抽象クラスでデフォルトの方向を決定し、サブクラスで実装すると、実装作業が容易になります.
抽象クラスにはジェネレータがあり、アクセス指定子(public、protected、default、private)は任意のタイプであってもよい.
インタフェースと抽象クラスの異同
共通点
継承クラスまたは実装インタフェース内の抽象メソッドを強制的に実装します.
差異
目的の相違がある
インタフェースには、関数を強制的に実装するための関数のハウジングが1つしかありません.強制的に実装することで、実装オブジェクトと同じ動作を保証できます.(使用時間:継承関係が別の祖先クラスにアップグレードされた場合、同じ機能が必要な場合)
抽象クラスを継承して機能を利用し、拡張します.(使用時間:継承関係に沿って上に進む場合は、同じ祖先クラスを継承する必要があり、完全に同じ機能も必要です)
参考資料
Reference
この問題について(Javaインタフェース、抽象クラス), 我々は、より多くの情報をここで見つけました https://velog.io/@wkdtjrrms0/Java인터페이스-추상클래스テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol