27

インターフェイスは特別な種類のクラスですか、それともインターフェイスはクラスではないと言えますか?

4

7 に答える 7

33

インターフェイスはクラスではありませんが、インターフェイスとクラスの両方がであると言えます。

Java仕様から:

Javaプログラミング言語では、すべての変数とすべての式には、コンパイル時に決定できる型があります。タイプは、プリミティブ型または参照型の場合があります。参照型には、クラス型とインターフェース型が含まれます。

Class<T>ただし、クラスとインターフェイスの両方を表すことができるという特別なクラスがあることに注意してください。

クラスClassのインスタンスは、実行中のJavaアプリケーションのクラスとインターフェースを表します。

Classインターフェイスがインスタンスで表されるという事実はisInterfacetrueインターフェイスが単なる特殊なタイプのクラスであるという印象を与える可能性があります。ただし、そうではありません。

于 2012-07-30T11:15:11.823 に答える
8

いいえ、インターフェースはJavaのクラスではありません。

インターフェイスは型であり、すべての参照型(つまり非プリミティブ型)はJavaでもまったく同じように処理されます。多くの場合、人々が「クラス」と言うとき、彼らは実際には「参照型」を指します。

混乱するかもしれませんが、インターフェース定義はファイルに保存されています.class、これはJavaの技術的な成果物にすぎません。実際、すべての参照型定義(クラス、インターフェース、アノテーション、列挙型)は.classJavaのファイルに保管されます。

于 2012-07-30T11:16:43.010 に答える
7

インターフェイスの概念は抽象クラスに由来します。抽象クラスにはメソッド(または抽象メソッド)のプロトタイプが含まれ、そのメソッドのいくつかも定義できますが、インターフェイスにはメソッドまたは抽象メソッドのプロトタイプ(または署名)のみが含まれ、その定義は実装クラスによって提供されます。したがって、上記のステートメントから、インターフェースは100%抽象クラスのようなものであり、そのメソッドはいずれも定義されていないことが明らかです 。繰り返しになりますが、インターフェースは100%抽象クラスのようなものですが、クラスではありません。

「インターフェースは、クラスが実行できることのコントラクトです」

インターフェイスを導入する理由は、extend単一のクラスしかできないのですが、インターフェイスはJavaに新しいもの implementをもたらし、何千ものインターフェイスを実装できるため、クラスであるとは言えません。

あなたはこれについてもっとここで得ることができます!

于 2012-07-30T11:34:52.177 に答える
5

インターフェイスは、すべての実装クラスが従う必要のある単なるコントラクトです。インターフェイスはテンプレートのようなものであり、クラスがそれを実装するまで影響を与えることはできません。

于 2012-07-30T11:16:41.047 に答える
3

はい、インターフェースはのインスタンスですjava.lang.Class。を持っている場合Classは、それがインターフェースであるかどうかを調べることができます:http: //docs.oracle.com/javase/7/docs/api/java/lang/Class.html#isInterface()

于 2012-07-30T11:16:56.300 に答える
1

インターフェイス(空の本体を持つ関連メソッドのグループです。)は単なるインターフェイスです。それはクラスではありません(クラスは、個々のオブジェクトが作成される青写真です)。

このようなインターフェースを定義していることに注意してください

interface Bicycle {....}

クラスは次のように定義されます

class MyBMX implements Bicycle{...}

したがって、インターフェイスはインターフェイスであり、クラスではありません

于 2012-07-30T11:17:55.760 に答える
-4

はいインターフェースは一種のクラスです。単に、クラスメソッドと、インターフェースメソッド(抽象メソッドのみ)およびデータ(静的および最終のみ)に存在するデータに存在すると言います。

詳しくは https://www.youtube.com/watch?v=qgBv1_Plldo&list=PLbRMhDVUMngcx5xHChJ-f7ofxZI4JzuQR&index=21&t=13:52をご覧ください。

于 2020-12-25T14:50:40.640 に答える