interfaceをX
クラスAをA a = new A();
と作成したあと、
X test = a.a'();
というコードがあるのですが(a'はクラスAの中のメソッドです)
インターフェイス型のtestが作成されたということでしょうか?
a'()がどんなことをしているのかわかりませんが、
「X
が継承されたクラスのインスタンスが生成され、
インターフェースX
型のtest
という変数に格納された」
ということになります。
またインターフェイス型の変数は何か特別な働きがありますか?
変数の定義ではインターフェース型を使うことが可能で、
これは、そのインターフェース型を継承したインスタンスであれば格納可能となります。
例えば、インターフェースDrink
があるとして、
それを実装した以下のクラスがあるとします。
これらは全てDrink型として定義できるので、配列やメソッドの引数などで重宝します。
Java
1Drink[] drinks = {
2 new Water(),
3 new Juice(),
4 new Beer()
5};
Java
1public void addDrink(Drink d) {
2 drinks.add(d);
3}
また別クラスのBやCの中のメソッドにおいて
public static X xb(){.....}
X xc(){.....}
のようにメソッドxb、xcが作成されているのですがこれはどういうことなのでしょうか?
こちらに関しては情報が不足しすぎてるので適切な回答ができかねます。
「作成されている」のは必要だからではないですか?
[コメントを受けて追記]
メソッドをつくるにはpublic static メソッド名{}のような形だと思うんですけどメソッド名の前にインターフェイス名を入れる(public static インターフェイス名 メソッド名{})とどうなるのでしょうか?
そもそもメソッドの書き方が間違っています。
Javaのメソッドは最低限以下の形式が必要です。
Java
1[返り値の型] [メソッド名]() {
2
3}
この形式から、返り値の前に「アクセス修飾子(publicなど)」や「static」がついたり、
メソッド名の後の()
の中に引数が加わったりします。
public static X xb() { }
という形のX
は「返り値の型」の部分にあたりますので、
インターフェースX
型(それを継承したクラス)を返しますということになります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。