インターフェイスは特別な種類のクラスですか、それともインターフェイスはクラスではないと言えますか?
7 に答える
インターフェイスはクラスではありませんが、インターフェイスとクラスの両方が型であると言えます。
Java仕様から:
Javaプログラミング言語では、すべての変数とすべての式には、コンパイル時に決定できる型があります。タイプは、プリミティブ型または参照型の場合があります。参照型には、クラス型とインターフェース型が含まれます。
Class<T>
ただし、クラスとインターフェイスの両方を表すことができるという特別なクラスがあることに注意してください。
クラスClassのインスタンスは、実行中のJavaアプリケーションのクラスとインターフェースを表します。
Class
インターフェイスがインスタンスで表されるという事実はisInterface
、true
インターフェイスが単なる特殊なタイプのクラスであるという印象を与える可能性があります。ただし、そうではありません。
いいえ、インターフェースはJavaのクラスではありません。
インターフェイスは型であり、すべての参照型(つまり非プリミティブ型)はJavaでもまったく同じように処理されます。多くの場合、人々が「クラス」と言うとき、彼らは実際には「参照型」を指します。
混乱するかもしれませんが、インターフェース定義はファイルに保存されていますが.class
、これはJavaの技術的な成果物にすぎません。実際、すべての参照型定義(クラス、インターフェース、アノテーション、列挙型)は.class
Javaのファイルに保管されます。
インターフェイスの概念は抽象クラスに由来します。抽象クラスにはメソッド(または抽象メソッド)のプロトタイプが含まれ、そのメソッドのいくつかも定義できますが、インターフェイスにはメソッドまたは抽象メソッドのプロトタイプ(または署名)のみが含まれ、その定義は実装クラスによって提供されます。したがって、上記のステートメントから、インターフェースは100%抽象クラスのようなものであり、そのメソッドはいずれも定義されていないことが明らかです 。繰り返しになりますが、インターフェースは100%抽象クラスのようなものですが、クラスではありません。
「インターフェースは、クラスが実行できることのコントラクトです」
インターフェイスを導入する理由は、extend
単一のクラスしかできないのですが、インターフェイスはJavaに新しいもの implement
をもたらし、何千ものインターフェイスを実装できるため、クラスであるとは言えません。
あなたはこれについてもっとここで得ることができます!
インターフェイスは、すべての実装クラスが従う必要のある単なるコントラクトです。インターフェイスはテンプレートのようなものであり、クラスがそれを実装するまで影響を与えることはできません。
はい、インターフェースはのインスタンスですjava.lang.Class
。を持っている場合Class
は、それがインターフェースであるかどうかを調べることができます:http: //docs.oracle.com/javase/7/docs/api/java/lang/Class.html#isInterface()
インターフェイス(空の本体を持つ関連メソッドのグループです。)は単なるインターフェイスです。それはクラスではありません(クラスは、個々のオブジェクトが作成される青写真です)。
このようなインターフェースを定義していることに注意してください
interface Bicycle {....}
クラスは次のように定義されます
class MyBMX implements Bicycle{...}
したがって、インターフェイスはインターフェイスであり、クラスではありません
はいインターフェースは一種のクラスです。単に、クラスメソッドと、インターフェースメソッド(抽象メソッドのみ)およびデータ(静的および最終のみ)に存在するデータに存在すると言います。