3

如果我有:

public interface One{
    public void method1();
}

public interface Two{
    public void method2();
}

public class AClass implements One, Two{

}

public static void aDiffMethod1(One o){
    o.method1();
}

public static void aDiffMethod2(Two t){
    t.method2();
}

public static void main(String[] args){
     AClass a = new AClass();
     aDiffMethod1(a);
     aDiffMethod2(b);
}

有时在我的代码中,我会传递一个 AClass 的实例,因为它是接口 One 的子类型(换句话说,方法的参数类型将是 One,我将传递 AClass 类型),而在其他时候我可能传递 AClass 对象,知道它是接口 Two 的子类型(传递给的方法的参数类型是 Two,所以我将 AClass 作为 Two 的子类型传递)。

可以以不同接口的子类型为幌子将 AClass 的实例传递给不同的方法吗?

这就是他们对接口编程的意思吗?

4

2 回答 2

2

是的,这就是接口的全部意义所在。

只接受接口的方法One只会调用method1,所以这是安全的。只接受接口的方法Two只会调用method2,所以再一次,这是安全的。

于 2012-08-05T13:02:11.300 回答
2

是的,这很好。如果一个方法需要一个接口实现,那么你的 AClass 就满足了这个约定。

对接口而不是实现进行编程是一种设计方法,您可以将行为操作分组到接口中,而不是将其放在主类中。

于 2012-08-05T13:02:31.847 回答