传递实现两个接口的类的实例作为两个不同的子类型

时间:2012-08-05 12:59:23

标签: java oop interface polymorphism

如果我有:

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的实例传递给不同的方法是否可以?

这是通过编程到界面的意思 - 所以它很好吗?

2 个答案:

答案 0 :(得分:2)

是的,这就是界面的重点。

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

答案 1 :(得分:2)

是的,这很好。如果某个方法期望接口实现,那么您的AClass将履行该合同。

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