ホームページ > Java > &#&チュートリアル > キーワード:抽象拡張、インターフェース実装

キーワード:抽象拡張、インターフェース実装

Susan Sarandon
リリース: 2025-01-20 22:20:09
オリジナル
131 人が閲覧しました

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 インターフェイスは、IS-A 関係も表します。

抽象クラスと同様にインスタンス化することはできません。

なぜ Java インターフェースを使用するのですか?

インターフェースを使用する理由は主に 3 つあります。それらを以下に示します。

Image description

インターフェースを宣言するには?

インターフェイスは、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 の違い キーワード**

Image description

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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート