interface A()
interface B()
ClassC implements A,B
{
}
Class D
{
main()
{
new D().dofunction(new C());
}
dofunction(A a)
{
}
dofunction(B b)
{
}
}
上面代码想要说:
有A(Aface),B(Bface)两个接口,C(ImplementAB)类实现了(implements)A,B接口,D(MainClass)类里有定义了两个名字(dofunction)一样的函数参数分别是接口A,和B。
在D类的main方法里调用函数(dofuanction())。
--------------------------------------------------------
package cn.itcast;
public interface Aface {
public void doA();
}
------
package cn.itcast;
public interface Bface {
public void doB();
}
------
package cn.itcast;
public class ImplementAB implements Aface,Bface
{
public void doA()
{
System.out.println("hi,my name is A");
}
public void doB()
{
System.out.println("hi,my name is B");
}
}
---------------
package cn.itcast;
public class MainClass {
/**
* @param args
*/
static ImplementAB impab = null;
public MainClass(ImplementAB impab)
{
this.impab = impab;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MainClass ma = new MainClass(new ImplementAB());
ma.dofunction((Aface)impab);
ma.dofunction((Bface)impab);
}
public void dofunction(Aface a)
{
a.doA();
}
public void dofunction(Bface b)
{
b.doB();
}
}
运行结果:
hi,my name is A
hi,my name is B
为什么会得到这样的结果呢??
因为一个类必须实现接口中的所有方法,因为调用者有可能会用到接口中的每个方法,所以,调用者必须实现这些方法。在main方法里调用dofunction()的时候必须指定函数的所有者,因为类implementAB都实现了Aface接口和Bface接口。如果不指定为那一种类型的话程序就报错,因为它不知道应该执行那个任务。