見出し画像

インスタンスとインターフェースがよく分からない

インスタンスとは、オブジェクト指向プログラミングにおいて、クラスを実体化させたものです。クラスは特定の属性や振る舞いを持つ設計図のようなものであり、インスタンスはその設計図に基づいて実際のオブジェクトを生成するものです。

さて、インターフェースは、クラスが持つべきメソッドやフィールドの宣言のみを含む抽象的な設計図です。インターフェースは、クラスがどのようなメソッドを持つべきかを明示し、共通の動作を実現するために使用されます。

それでは、具体的なサンプルコードを使ってインスタンスとインターフェースを説明します。

まず、以下のようなインターフェースを考えてみましょう。

interface Animal {
    void sound();
}

このAnimalインターフェースは、soundというメソッドを持っています。このメソッドは、具体的な動物の鳴き声を出力するために実装する必要があります。

次に、このインターフェースを実装したクラスを作成してみましょう。

class Dog implements Animal {
    @Override
    public void sound() {
        System.out.println("ワンワン!");
    }
}

class Cat implements Animal {
    @Override
    public void sound() {
        System.out.println("ニャーニャー!");
    }
}

ここでは、DogクラスとCatクラスがAnimalインターフェースを実装しています。それぞれsoundメソッドをオーバライドして、それぞれの動物の鳴き声を出力しています。

これで、インスタンスとインターフェースの使い方がわかりましたね!インスタンスを作成する際に、クラスがどのインターフェースを実装しているかを指定することで、インターフェースのメソッドを実行できるようになります。

オーバライドについても少しご説明しますね。オーバライド(Override)とは、サブクラスがスーパークラスのメソッドを再定義することを意味します。具体的には、サブクラスにおいてスーパークラスのメソッドと同じ名前、引数リスト、戻り値型を持つメソッドを定義し、新たな実装を提供することです。

具体的なJavaのコード例を提供し、それを参考にしてサンプルコードを作成することはできます。以下に、インスタンスとインターフェースに関するJavaのコード例を示します。

// インターフェースの定義
interface MyInterface {
    void myMethod(); // メソッドの宣言
}

// インターフェースを実装するクラスの定義
class MyClass implements MyInterface {
    public void myMethod() {
        System.out.println("メソッドが呼び出されました");
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        // インスタンスの作成
        MyClass obj = new MyClass();
        
        // インターフェースのメソッドを呼び出す
        obj.myMethod();
    }
}

上記のコードでは、`MyInterface`というインターフェースを定義しています。そして、`MyClass`というクラスが`MyInterface`を実装しています。`MyInterface`は`myMethod`というメソッドの宣言のみを含んでいます。

`MyClass`は`myMethod`メソッドを実装し、その中で「メソッドが呼び出されました」という文を出力します。`Main`クラスでは、`MyClass`のインスタンスを作成し、`myMethod`メソッドを呼び出しています。

このコードを実行すると、コンソールに「メソッドが呼び出されました」という出力が表示されます。これは、インスタンスである`obj`が`MyInterface`のメソッドを持つため、`myMethod`メソッドが正しく呼び出されたことを示しています。

この記事が気に入ったらサポートをしてみませんか?