这个是无法区分的。类中test()同时实现了两个接口中同名同参数列表的方法,虽然在实例类中只有一个test()方法。 其实你写个测试代码就可以得出结论; test code: interface Inter1 { void test(); }
interface Inter2 { void test(); }
class A implements Inter1,Inter2 { public void test() { System.out.println("我同时实现了两个接口中的方法!"); } } public class test { public static void main(String [] args) { A a=new A(); a.test(); } }如上代码,编译结果,编译可以通过。 打印时候出现了两条记录,很显然是一个方法同时实现了两个接口中的同名同类型参数列表的方法。 但这样做完全没有任何意义。
当Test t = new Test();
t.test();的时候真正执行的是你写在Test类test方法中的代码,和那两个接口已经没有关系了
接口强调你要实现某方法,不要求你怎样实现以及实现了该方法达到了什么效果
这种写法尽量避免,估计只有scjp这种考试才会考这种吧......
你的Test类的test()方法就是两个接口方法的实现,
其他的类调用这两个接口的test()方法时
都会执行此方法(前提是只有Test类实现实现此两接口,如果还有其他的类实现,那就具体分析了)
其实你写个测试代码就可以得出结论;
test code:
interface Inter1
{
void test();
}
interface Inter2
{
void test();
}
class A implements Inter1,Inter2
{
public void test()
{
System.out.println("我同时实现了两个接口中的方法!");
}
}
public class test
{
public static void main(String [] args)
{
A a=new A();
a.test();
}
}如上代码,编译结果,编译可以通过。
打印时候出现了两条记录,很显然是一个方法同时实现了两个接口中的同名同类型参数列表的方法。
但这样做完全没有任何意义。
也就是说引用是不同的。当执行a.test(),同时有两条引用满足,就执行了这两个方法。不知这样理解是否正确呢,呵呵。
所以无论多少个借口,有多少个同名的方法,都没有问题的
java中没有C++那些多重继承的麻烦