嗨,我正在学习Java接口.我在Java教程中读到一个接口是一个引用类型.假设我声明了一个界面
public interface INT { public void dosomething(); }
Run Code Online (Sandbox Code Playgroud)
我有3个班,A {},B {}和C {}.
class A{} implements INT.
class B{} extends A{} and implements INT.
class C{} implement INT.
Run Code Online (Sandbox Code Playgroud)
然后我有另一个具有构造函数的类D {}
public class D{
private INT a,b,c ;
public D( INT a1, INT b1 , INT c1) {
a = a1;
b = b1;
c = c1;
}
....
}
Run Code Online (Sandbox Code Playgroud)
然后在main()中,我实例化一个D对象
D myobject = new D( new A(), new B(), new C() );
Run Code Online (Sandbox Code Playgroud)
据说,类层次结构不相关的对象可以用于使用接口相互交互.所以在上面的类中,C类和A类没有关系,现在界面允许它们相互"交谈"?我理解这是对的吗?还有什么其他优点来声明构造函数是接口类型而不是实际的类类型,而不是
private A a, B b, C c ;
public D( A a1, B b1 , C c1) {
a=a1; b=b1;c=c1;
}
Run Code Online (Sandbox Code Playgroud)
这与多态性有关吗?对不起,这是我在OO的第一次尝试,所以我在这里缺乏一些了解.
在方法(或构造函数)参数中使用接口类型的巨大优势是其他程序员可以调用它并传入自己的实现接口的类.编写方法/构造函数时,您不了解的类以及哪些类甚至不存在.如果使用具体类,调用者必须使用这些类,子类化或更改代码,所有这些都比实现接口更多地限制它们.