Java 抽象キーワード
abstract キーワードは、Java で抽象化を実現するために使用されます。これは、抽象クラスとメソッドを作成するために使用される非アクセス修飾子です。
抽象クラスの役割は、抽象メソッドを含めることです。ただし、非抽象メソッドが含まれる場合もあります。抽象キーワードで宣言され、実装を持たないメソッドは、抽象メソッドと呼ばれます。
構文:-
abstract class Employee { abstract void work(); }
注 - 非抽象クラスでは抽象メソッドを宣言できません。
抽象キーワードのルール
してはいけないこと
抽象キーワードは変数やコンストラクターと一緒に使用できません。
クラスが抽象クラスの場合、インスタンス化できません。
メソッドが抽象の場合、メソッドには本体が含まれません。
抽象キーワードをfinalに使用することはできません。
抽象メソッドをプライベートとして宣言することはできません。
抽象メソッドを静的として宣言することはできません。
抽象メソッドは同期できません。
すべきこと(未定)
抽象キーワードはクラスとメソッドでのみ使用できます。
抽象クラスにはコンストラクターと静的メソッドを含めることができます。
クラスが抽象クラスを拡張する場合、少なくとも 1 つの抽象メソッドも実装する必要があります。
抽象クラスには、メイン メソッドと最終メソッドを含めることができます。
抽象クラスには、オーバーロードされた抽象メソッドを含めることができます。
ローカルの内部クラスを抽象として宣言できます。
throw 節を使用して抽象メソッドを宣言できます。
抽象クラスとは:
抽象クラスは、抽象として宣言されたクラスです。抽象メソッドが含まれる場合と含まれない場合があります。抽象クラスはインスタンス化できませんが、サブクラス化することはできます。
抽象メソッドとは:
抽象メソッドは、次のように、実装なしで (中括弧なしでセミコロンが後に続きます) 宣言されるメソッドです。
abstract void moveTo(double deltaX, double deltaY);
*抽象化: *
その主な目的は、不必要な詳細をユーザーから隠すことで複雑さに対処することです。
必要なデータのみを表示し、不要な詳細をユーザーから非表示にします。
抽象クラスには子クラスがあります。 この子クラスは抽象クラスにもできますか?
はい、その場合、Child クラスはインスタンス化できません。
参考:https://www.javatpoint.com/abstract-keyword-in-java
package chennai.velachery; public abstract class Parent { abstract void getJob(); void studyWell() { System.out.println("Focus On Maths, Science"); } static void display() { System.out.println("Hi"); } public static void main(String[] args) { Parent.display(); // Parent pp = new Parent(); // pp.display(); // pp.studyWell(); // pp.getJob(); } }
package chennai.velachery; public class Child extends Parent { public static void main(String[] args) { // TODO Auto-generated method stub Child ch = new Child(); ch.getJob(); ch.studyWell(); Child.display(); } @Override //Annotation : Metadata //Data about data void getJob() { // TODO Auto-generated method stub } }
例 2:
package chennai.velachery; public abstract class Parent1 { public void watch_tv() { System.out.println("Watching TV"); } public void chat_with_friends() { System.out.println("Chatting with neighbours"); } public abstract void cook(); }
package chennai.velachery; public class Child1 extends Parent1{ public static void main(String[] args) { // Child1 ch = new Child1(); // ch.cook(); // ch.chat_with_friends(); // ch.watch_tv(); // ch.work(); Child1 ch = new Child1(); //Dynamic Binding //Parent Class Reference points to Child class Memory Parent1 parent = new Child1(); parent.watch_tv(); parent.chat_with_friends(); parent.cook(); //parent.work(); } public void watch_tv() { //Runtime Polymorphism System.out.println("Watching OTT"); } @Override public void cook() { // TODO Auto-generated method stub System.out.println("Cooking"); } public void work() { System.out.println("Java Projects"); } }
Java のインターフェース
Java のインターフェースはクラスの設計図です。静的定数と抽象メソッドがあります。
Java のインターフェースは抽象化を実現するメカニズムです。 Java インターフェースには抽象メソッドのみが存在でき、メソッド本体は存在できません。 Java で抽象化と多重継承を実現するために使用されます。
言い換えれば、インターフェースは抽象メソッドと変数を持つことができると言えます。メソッド本体を含めることはできません。
なぜ Java インターフェースを使用するのですか?
インターフェースを使用する理由は主に 3 つあります。それらを以下に示します。
インターフェースを宣言するには?
インターフェイスは、interface キーワードを使用して宣言されます。それは完全な抽象化を提供します。これは、インターフェイス内のすべてのメソッドが空の本体で宣言され、すべてのフィールドがデフォルトで public、static、final であることを意味します。インターフェイスを実装するクラスは、インターフェイスで宣言されたすべてのメソッドを実装する必要があります。
*インターフェース: *
インターフェースは、空の本体を持つ関連メソッドのグループです
100% 抽象化:
構文:
abstract class Employee { abstract void work(); }
例:
package chennai.velachery; public abstract class Parent { abstract void getJob(); void studyWell() { System.out.println("Focus On Maths, Science"); } static void display() { System.out.println("Hi"); } public static void main(String[] args) { Parent.display(); // Parent pp = new Parent(); // pp.display(); // pp.studyWell(); // pp.getJob(); } }
参考:https://www.javatpoint.com/interface-in-java
Java での拡張と実装:
Java では、extends キーワードは親クラスのすべてのプロパティとメソッドを継承するために使用され、implements キーワードはインターフェイスで定義されたメソッドを実装するために使用されます。
**
extends とimplements の違い キーワード**
Java の「拡張」キーワード
Java では、extends キーワードは、定義されているクラスが継承を使用して基本クラスから派生していることを示すために使用されます。基本的に、extends キーワードは、親クラスの機能をサブクラスに拡張するために使用されます。 Java では、あいまいさのため多重継承は許可されません。したがって、あいまいさを避けるために、クラスは 1 つのクラスのみを拡張できます。
package chennai.velachery; public class Child extends Parent { public static void main(String[] args) { // TODO Auto-generated method stub Child ch = new Child(); ch.getJob(); ch.studyWell(); Child.display(); } @Override //Annotation : Metadata //Data about data void getJob() { // TODO Auto-generated method stub } }
Java の「実装」キーワード
Java では、implements キーワードを使用してインターフェイスを実装します。インターフェイスは、完全な抽象化を実装し、抽象メソッドのみを含む特別なタイプのクラスです。インターフェイス メソッドにアクセスするには、インターフェイスは、implements キーワードを使用して別のクラスによって「実装」され、インターフェイスのプロパティを継承するクラスにメソッドが実装される必要があります。インターフェイスにはメソッドが実装されていないため、クラスは一度に任意の数のインターフェイスを実装できます。
/
package chennai.velachery; public abstract class Parent1 { public void watch_tv() { System.out.println("Watching TV"); } public void chat_with_friends() { System.out.println("Chatting with neighbours"); } public abstract void cook(); }
参考:https://www.geeksforgeeks.org/extends-vs-implements-in-java/
例:
abstract class Employee { abstract void work(); }
package chennai.velachery; public abstract class Parent { abstract void getJob(); void studyWell() { System.out.println("Focus On Maths, Science"); } static void display() { System.out.println("Hi"); } public static void main(String[] args) { Parent.display(); // Parent pp = new Parent(); // pp.display(); // pp.studyWell(); // pp.getJob(); } }
抽象クラス u>
0 ~ 100% の抽象化
抽象キーワード
非静的変数
存在することができます
* *vs インターフェース
100% 抽象化
抽象的なキーワードはありません
すべての変数は静的です。
最終および公開
以上がキーワード:抽象拡張、インターフェース実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。