我正在查看 Java 网站上提供的接口章节
Using Interface as a type
所以我的理解是,接口的全部意义在于它就像一个类,但不可能从中形成对象,但是这个页面说明了如何使用接口作为数据类型。该行Relatable obj1 = (Relatable)object1;
似乎创建了一个类型的对象,Relatable
它是一个接口。虽然我必须说new
这里没有使用关键字,因此并没有真正创建对 type 对象的引用Relatable
。这真的是这条线没有创建类型对象的原因Relatable
吗?
再次,它进一步说
如果您强调在各种类中实现 Relatable,那么从这些类中的任何一个实例化的对象都可以与 findLargest() 方法进行比较——前提是这两个对象属于同一个类。
这是什么意思?这是否意味着实现Relatable
可以调用的任何东西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);
}
使用相关作为类型:
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;
}
----- 编辑 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);
}
};
那么这是如何工作的呢?