2016-11-25 6 views
-3

私は、Javaのインターフェースが抽象クラスとして仮想マシンによって処理されることを知っています。だから、Javaのすべてのクラスは抽象であるかどうかはコンストラクタを持っています。これはインターフェイスにもコンストラクタがあることを意味しますか?なぜなら、抽象クラスなので、私はあまりにもコンストラクタを持つのが理にかなっているからです。一方、インターフェイスは初期化するための属性を持っていないので意味がありません。 それは実際にどのように機能しますか?インターフェイスにはJavaのコンストラクタがありますか?

+4

「分かっていない」。あなたは*それを考えると、あなたは間違っています。したがって、残りの質問は、間違った前提に基づいています。 – EJP

+0

@EJPインターフェイスは仮想マシンのクラスとして扱われませんか? –

+1

「あなたは間違っている」のどの部分を理解できませんでしたか?インターフェイスは、仮想マシンによってインターフェイスとして処理されます。 – EJP

答えて

4

インターフェイスにはコンストラクタがありません。それらのの実装はです。

+1

@LoganKulinskiこの回答に対するあなたのコメントの関連性が私を逃れます。 – EJP

1

すべてのインターフェイスは、次のとおりです。

interface MyInterface{ 
    void addNumber(int amount); 
    void subtractNumber(int amount); 
    int getNumber(); 
} 

あなたが「実行」インターフェース、およびインターフェースはあなたが外のオブジェクトを作成するものではありませんありません。 実装があなたのインターフェイスはしかし、コンストラクタを持っていないこと

クラス:

class MyNumber implements MyInterface{ 
    private int myNumber; 

    //Here is your constructor, called when you instantiate it. 
    myNumber(int number){ 
     myNumber = number; 
    } 

    //Now you need to add the methods in your interface 
    public void addNumber(int number){ 
     myNumber = myNumber + number; 
    } 

    public void subractNumber(int number){ 
     myNumber = myNumber - number; 
    } 

    public int getNumber(){ 
     return myNumber; 
    } 
} 

はありませんので、インターフェースは ないがコンストラクタを持っています。お役に立てれば!

編集:あなたは、あなたのオブジェクトを作成するとき、あなたはあなたのコンストラクタを呼び出す:

MyNumber number = new MyNumber(5); //Calls the constructor and creates a new MyNumber with the value of 5. 
number.addNumber(6); //Adds 6 to your number, it is now 11. 
number.subtractNumber(3); //Subracts 3 from your number, it is now 8. 
number.getNumber(); //returns the value of myNumber inside of your MyNumber object, which is 8. 

編集2:私はインターフェイス上でもう少し詳しく説明したいと思います。あなたは、彼らが初期化するための属性を持っていないと言って正しいです。彼らには実装方法があります。インターフェイスに「移動」メソッドがある場合は、多くのさまざまなものに適用できます。車、犬、ボート、飛行機、ナツメ、ヘビはすべて動くが、どうやって動くのだろうか?車はナマケよりも速く動くので、動きが異なります。移動する必要のあるクラスを作成するときに、その移動メソッドを変更して、必要な状況に合わせて調整することができます。それがインターフェイスのポイント、柔軟性です。

+0

メソッドは初期化を必要としません。 – EJP

+0

うわー、それを指摘してくれてありがとう:)実装済みに変更しました! –

+0

私は、あなたの最後の段落に「属性を初期化する」以外に有用なものはないと思います。ただ混乱を招くだけです。 – EJP

関連する問題