私は、Java Web サイト
Using Interface as a type
で提供されている Interface の章を見ています。
したがって、私の理解では、インターフェイスの全体的なポイントは、クラスのようなものですが、そこからオブジェクトを形成することはできませんが、このページでは、インターフェイスをデータ型として使用します。この行は、インターフェイスであるRelatable obj1 = (Relatable)object1;
タイプのオブジェクトを作成しているようです。ここではキーワードが使用されていないため、 type のオブジェクトへの参照を実際に作成していRelatable
ないと言わざるを得ません。この行がタイプのオブジェクトを作成していないのは本当に原因ですか? new
Relatable
Relatable
繰り返しますが、それはさらに言います
さまざまなクラスで Relatable を実装することを強調する場合、それらのクラスのいずれかからインスタンス化されたオブジェクトを findLargest() メソッドと比較できます (両方のオブジェクトが同じクラスである場合)。
これは何を意味するのでしょうか?これは、implementsRelatable
が呼び出すことができるものを意味しますfindLargest()
か? もしそうなら、なぜそれは言うのprovided that both objects are of the same class
ですか?
----- 編集 -----
このチュートリアルの前の章から:
関連性の定義:
public interface Relatable {
// this (object calling isLargerThan)
// and other must be instances of
// the same class returns 1, 0, -1
// if this is greater // than, equal
// to, or less than other
public int isLargerThan(Relatable other);
}
タイプとして relatable を使用する:
public Object findLargest(Object object1, Object object2) {
Relatable obj1 = (Relatable)object1;
Relatable obj2 = (Relatable)object2;
if ((obj1).isLargerThan(obj2) > 0)
return object1;
else
return object2;
}
----- EDIT 2 -----
匿名クラスの章では、これを行います:
public class HelloWorldAnonymousClasses {
interface HelloWorld {
public void greet();
public void greetSomeone(String someone);
}
.
.
.
HelloWorld englishGreeting = new EnglishGreeting();
HelloWorld frenchGreeting = new HelloWorld() {
String name = "tout le monde";
public void greet() {
greetSomeone("tout le monde");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Salut " + name);
}
};
では、これはどのように機能するのでしょうか。