2011-02-03 5 views
1

ClassAObjectを拡張します。法的なインスタンス化を考える:Javaでのクラス宣言に関するこの宿題に関する質問には、どうすれば答えることができますか?

InterfaceB myGuy = new ClassA(); 

ClassA myGuy = new ClassA(); 

ClassAのためのクラス宣言の最初の行は、おそらく何でしょうか?

はFYI、私の最後の試みた答えだった - はい、これがJavaのnoobから宿題の質問です

"publicクラスクラスAがinterfaceB {...}を実装します"。私は正しい方向に良い点を感謝します。思春期の否定的な解説はあなた自身に...保つことができます...ありがとう。

+3

を知って、私が仮定しますか? –

+2

私はあなたに手がかりを与えます...それにはその中に 'implements'という言葉があります – kelloti

+8

これは宿題の問題なので、それはどのように表現されているのでしょうか?いくつかの答えが出てきて、私たちが最もよく考えている理由と理由を聞かせてください。学習する最善の方法は、最初に答えを試み、間違いから学ぶことです。他の人があなたのために仕事をすることを期待してはいけません。 – drekka

答えて

1

あなたはこの行が合法であることを知っている:

 
InterfaceB myGuy = new ClassA(); 

その割り当てが合法であるためには、ClassAInterfaceBを拡張または実装する必要があります。 ClassAObjectに拡張されているので、InterfaceBを拡張することはできません。したがって、InterfaceBはクラスではなくインターフェイスでなければなりません。

InterfaceBためのインターフェイス宣言の最初の行は次のとおりです。

 
public interface InterfaceB { 

のでClassAのためのクラス宣言の最初の行は何でしょうか?

+0

public class classAはInterfaceB {...}を実装しています[注:これは私が宿題の答えとして書いたものです] – thefonso

1

ヒントは、2つの法的インスタンス化の最初のものであることが明らかです:InterfaceB

変数を宣言するときは、任意タイプから(サブクラスによって)導出されるオブジェクトまたは(インタフェースからの)器具の宣言された型(newキーワードで)インスタンス化することができます。

したがってInterfaceBは、ClassAで実装されたインターフェイスか、ClassAのスーパークラスのいずれかです。

+0

「InterfaceB」と呼ばれているだけで、インターフェースにはならないからです。また、 'InterfaceB'は' ClassA'のスーパークラスにすることはできません。なぜならOPが最初に言ったのは 'ClassA'が' Object'を拡張したからです。 –

+0

@Erick Robertson:インタフェースBであるという理由から、回答者を特定の解決策に向かわせようとしていただけです。複数のスーパークラスを持つことができます。 'ClassA'は' InterfaceB'というクラスを拡張でき、 'Object'は両方のスーパークラスです。この質問の中には、 'InterfaceB'が' ClassA'のスーパークラスであることを禁止するものはありません。それはインタフェースであることを示唆していますが、この結果を明示的に要求していません。 –

+0

実際には、 'ClassA'は' Object'を拡張しています。単語 "extend"は、Javaでは非常に特殊な意味を持っています。 'ClassA'は' Object'の直下のサブクラスです。つまり、 'InterfaceB'は' ClassA'のスーパークラスにはなり得ません。 –

0

それは

InterfaceB interfaceB{}; 

ClassAそれを実装が存在することを意味。

ClassA imeplements interfaceB {} 

ですので、initできます。

InterfaceB interfaceB = new ClassA(); 

ようInterfaceBあなたはこれは宿題である第二1

関連する問題