怎么区分方法是继承来的还是实现的接口中的方法
handonghandong
2009-08-24
这不是调用了哪个方法,而是对哪个方法的实现,对于抽象类和接口,都是没有实体的,都需要继承他的子类或实现了接口的类去实现方法
|
|
hunter4java
2009-11-04
这个题目不无聊的,可以得出:是实现的接口中的方法而不是抽象类。
看一个例子: interface api { void func(); // 接口中的方法默认是public abstract 方法 } abstract class absClass { abstract void func(); // 访问类型是default类型 } class realClass1 extends absClass { void func() // OK.继承抽象类的访问类型(当然还可以是public,protected) { } } class realClass2 extends absClass implements api { void func() // 编译错误,必须是public访问类型,说明是实现的接口中的方法 { } } |
|
jinleix
2009-11-30
应该是接口的,我记得继承优先级大于接口。
|
|
无双Rama
2010-06-03
hunter4java 说得很清楚
|
|
yunj
2010-06-09
既是A的test,又是B的test。
C c = new C(); A a = (A)c; B b = (B)c; a.test(); b.test(); 调用的都是C里的test啊 class Q implements W,E,R,T,Y 等等等,这些接口里也可以是同名的方法 |
|
Heart.X.Raid
2010-06-21
接口中的方法和抽象类中的抽象方法都没有具体的字节码指令。JVM是不可能动态绑定到接口和抽象类中的抽象方法的。
如果想要了解JVM关于动态绑定机制的实现,可以看看我的博客:http://hxraid.iteye.com/blog/428891。 |
|
blogzhoubo
2010-10-19
抽象方法test()和接口中的test()都仅仅是方法的定义,里面并没有方法的实现。目的是强制要求子类去实现test()方法。要想调用test()方法,必须在子类里先进行实现。所以当然调用的是子类中的test()方法啦。
|
|
warmweb
2011-04-01
实例A的test方法,是父类的test方法,也是接口C的test方法;
因为B实现了C接口,可是B是抽象类,并没有实现test方法;A继承了B,实现了test方法,也就是实现了接口C的test方法。 我的理解,望多讨论! |
|
hongbiangoal
2011-05-25
|
|
hxy8846025
2011-06-09
下面是eclipse 自动生成的代码,是@Override.
public class C extends B implements A { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub C test=new C(); test.test(); } @Override public void test() { // TODO Auto-generated method stub System.out.println("hehe"); } |