怎么区分方法是继承来的还是实现的接口中的方法
hongbiangoal
2009-07-23
一个类A继承某抽象类B并且实现了接口C
类B中有一个抽象方法test(); 接口C中有一个方法test(); 实例A后调用test方法 怎么区分调用的是父类还是接口的? |
|
hongbiangoal
2009-07-23
很火啊
|
|
HelloJimmy
2009-07-26
hongbiangoal 写道 一个类A继承某抽象类B并且实现了接口C
类B中有一个抽象方法test(); 接口C中有一个方法test(); 实例A后调用test方法 怎么区分调用的是父类还是接口的? 根据多态,调用的还是A中的方法。。。。。。 |
|
jamesliulyc
2009-07-28
abstract class A { abstract void test(); } interface B { void test(); } public class C extends A implements B { public void test() { System.out.println(""); } public static void main(String[] args) { new C().test(); } } 是这样子吗,那怎么会调用A或者B里面的方法呢,都是要实现的 所以不是调用A或B里面的test是调用该实例的方法 |
|
jamesliulyc
2009-07-28
那我给个简单的对比,请问下面的是否会报错(不要用编译器)
abstract class A { abstract String test(); } interface B { void test(); } public class C extends A implements B { public void test() { System.out.println(this); } public static void main(String[] args) { new C().test(); } } 然后解释下就明白不是调用A或者B里面的方法,而是该实例的test() |
|
jamesliulyc
2009-07-28
如果你是A a = new C();
然后a.test(),那么在编译器会到A里面检查是否有test()方法,如果没有报错 运行期呢,还是调用实例化得方法 请大家解释下,第二种就明白啥为重写与重载的矛盾 |
|
qyongkang
2009-07-28
貌似无论是集成还是实现,都一样吧,不太清楚
|
|
jamesliulyc
2009-07-28
继承和实现都一样吗,莫非是哪类新新语言
|
|
tmj_159
2009-08-08
用Eclipse 测试了下,发现个小秘密
鼠标放在C类test方法左边的小三角型上会得到提示 implements cn.com.A.test 所以。。。。。 |
|
hongbiangoal
2009-08-10
有点乱 缕一缕
|