如果我有:
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,我将传递类型AClass)和其他我可以传递AClass对象知道它的接口的子类型Two(传递给的方法的参数类型是Two,所以我将AClass作为Two的子类型传递)。
在以不同接口的子类型为幌子的情况下,将AClass的实例传递给不同的方法是否可以?
这是通过编程到界面的意思 - 所以它很好吗?
答案 0 :(得分:2)
是的,这就是界面的重点。
仅接受接口One
的方法只会调用method1
,因此这是安全的。只接受接口Two
的方法只能调用method2
,所以再一次,这是安全的。
答案 1 :(得分:2)
是的,这很好。如果某个方法期望接口实现,那么您的AClass将履行该合同。
对接口而不是实现进行编程是一种设计方法,您可以将行为操作分组到接口中,而不是将其放在主类中。