\r\n\r\n
オブジェクト指向プログラミング(OOP)は、ソフトウェア開発における一般的なパラダイムである。クラスやオブジェクトを使ったプログラミングに現実的なシナリオをもたらすのに役立ちます。クラスは、オブジェクトを作成するための青写真です。プログラマーは、プロパティとメソッドを持つクラスを作成することができます。生徒と教師が対象です。オブジェクトを作成することをインスタンス化といいますが、oopではインターフェースも使用しています。インターフェースとクラスは似ているように見えますが、違いがあります。ここでは、クラスとインターフェースの違いについて説明します。クラスとインターフェースの大きな違いは、クラスがオブジェクトをインスタンス化するための設計図である参照型であるのに対し、インターフェースはオブジェクトをインスタンス化するために使用できない参照型である点です。
1. 概要と主な相違点 2. クラスとは 3. インターフェースとは 4. クラスとインターフェースの類似点 5. 横並び比較 - クラスとインターフェースを表形式で示す 6. まとめ
OOPでは、すべてがオブジェクトとみなされます。クラスがなければオブジェクトを作ることはできない。クラスは、オブジェクトを作成するための設計図である。家を建てるとき、建築家は間取り図を描きます。プランは授業とよく似ています。このオブジェによく似た家です。クラスとは、オブジェクトを構築するための計画である。オブジェクトとは、あるクラスを使って作られた物体のことです。
クラスはプロパティとメソッドを含む。生徒は、名前、学年、インデックス番号などのプロパティを持つことができます。読書、散歩、勉強など、生徒ができる方法。クラスは、プロパティとメソッドを使用して作成する必要があります。
多くのプログラミング言語では、クラスを作成するための構文は次のとおりです。
クラス名
// プロパティ
/ /メソッド
}
C言語やJavaなどのプログラミング言語では、クラスを使ってオブジェクトを作成する構文が類似しています。
学生 s1 = 新しい学生 ().
属性用のメモリを確保するために "new" キーワードが使用され、クラスには属性または変数を初期化するためのコンストラクタがあります。
クラスのメンバ(プロパティやメソッドなど)には、アクセス修飾子があります。アクセス記述子は、これらのメンバが他のクラスからアクセス可能かどうか、および可視性を記述する。クラスのメンバには、public、private、protectedなどのアクセス指定子をつけることができます。publicメンバは、他のクラスからアクセスすることができます。プライベートメンバーは、クラス内のみアクセス可能です。保護されたメンバは、クラスおよび関連するサブクラス内でアクセスすることができます。
抽象化は、オブジェクト指向プログラミングのバックボーンである。実装の詳細を隠蔽し、ユーザーには機能を明らかにすることができます。抽象化は、抽象クラスとインターフェースの使用によって実現されます。抽象的なメソッドは実装されません。少なくとも1つの抽象メソッドを含むクラスを抽象クラスと呼びます。
2つの抽象クラスが存在する場合、これらのクラスで宣言されたメソッドを実装する必要があります。これらのメソッドを実装するために、新しいクラスが使用されます。両方のクラスが同じメソッドを持つ場合、曖昧さの問題が発生する可能性があります。そのため、JavaやC言語などのプログラミング言語では、インターフェイスが用意されています。
インターフェースはメソッドの宣言のみを含み、実装されたメソッドはなく、オブジェクトの生成には使用できません。インターフェースは多重継承のサポートとコードの保護のために使用されます。
interfaceの構文は以下の通りです。interfaceはキーワード「Interface」を使用します。
インターフェース インターフェース名{.
method1 (parameter_list)と入力します。
method2 (parameter_list)と入力します。
}
上記の記述によれば、インターフェースは宣言されるだけである。定義がないのです。したがって、インターフェースはオブジェクトをインスタンス化することはできません。インターフェイスが何であるかという抽象的な見方を与えているに過ぎない。インターフェースで宣言されたメソッドは、1つまたは複数のクラスで実装することができます。クラスは、インターフェイスを実装するためにキーワード "implement "を使用します。Javaで書かれた例については、以下を参照してください。
図01:インターフェース使用手順
上記のプログラムによれば、AとBはインターフェースである。インターフェースAには、sum()というメソッド宣言があります。インターフェースBは、メソッド宣言sub()を持つ。クラスCは、インターフェースAとBの両方を実装しています。そのため、クラスCではsum()とsub()の両方のメソッドを定義しています。C型のオブジェクトを作成した後、sum()とsub()メソッドを同時に呼び出すことができます。
インターフェイスの中で宣言されたメソッドは、実装クラスが定義するように、常に public でなければなりません。
クラスとインターフェイス | |
クラスは、オブジェクトを作成するための設計図である参照型です。 | インターフェースは、インスタンス化できない参照型です。 |
オブジェクトのインスタンス化 | |
クラスは、オブジェクトをインスタンス化するために使用されます。 | メソッドで操作を行うことができないため、インターフェースのインスタンスを作成することはできません。 |
コンストラクタ | |
このクラスは、変数を初期化するためのコンストラクタを含んでいます。 | インターフェースは、初期化する変数がほとんどないため、コンストラクタを含んでいません。 |
キーワード | |
クラスというキーワードは、クラスに対して使われます。 | インターフェースには "interface "というキーワードが使われる。 |
アクセス記述子 | |
クラスのメンバには、private、public、protected があります。 | インターフェイスのメンバは、実装クラスが定義するように、常にパブリックであるべきです。 |
オブジェクト指向プログラミングでは、クラスとインタフェースが広く使われています。クラスとインターフェースの違いは、クラスがオブジェクトをインスタンス化するための設計図である参照型であるのに対し、インターフェースはオブジェクトをインスタンス化するために使用できない参照型である点です。クラスは多くのインターフェイスを実装することができます。しかし、スーパークラスを拡張することしかできません。in interfaceは多くのinterfaceを継承することができますが、実装を持つことはできません。どちらも大切なものです。プログラマーは、開発するソフトウェアに応じて使い分けることができる。
この記事のPDF版をダウンロードし、引用の指示に従ってオフラインで使用することができます。クラスとインターフェースの違いのPDF版のダウンロードはこちら