黑马程序员技术交流社区

标题: 怎么区分方法是继承来的还是实现 [打印本页]

作者: 徐西宏    时间: 2011-10-3 08:54
标题: 怎么区分方法是继承来的还是实现
一个类A继承某抽象类B并且实现了接口C 类B中有一个抽象方法test();接口C中有一个方法test();实例A后调用test方法 怎么区分调用的是父类还是接口的?
作者: 匿名    时间: 2011-10-3 10:23
interface C
{
    void func(); // 接口中的方法默认是public abstract 方法
}

abstract class B
{
    abstract void func(); // 访问类型是default类型
}

class A1 extends B
{
    void func() // 继承抽象类的访问类型(可以是public,protected)
    {

    }
}

class A2 extends B implements C
{
    void func() // 此处编译错误,必须是public访问类型,说明是实现的接口中的方法
    {

    }
}
作者: 匿名    时间: 2011-10-3 11:50
我觉得最可靠的应该是下面这么一种说法了。

实例化都是由A类来实例,具体调用哪个方法看其赋值给谁。
若[code=java]B b = new A();
b.test();//则自然是调用b中的test方法[/code]若[code=java]C c = new A();
c.test();//则调用的是C类中的方法。[/code]原帖地址:[url=http://duyiwuer.group.iteye.com/group/topic/12546?page=3]http://duyiwuer.group.iteye.com/group/topic/12546?page=3[/url]
作者: 匿名    时间: 2011-10-3 12:12
使用谁进行的实例化是调用的是谁的方法。
作者: 匿名    时间: 2011-10-5 08:57
用内部类实现两个方法。。。。要不很难分得清,别人看你代码也看不懂
作者: 匿名    时间: 2011-10-5 09:19
关键看实例化对象。A a=new a. a.test(),这样肯定是调用A的方法,反之,则调用的是B的方法。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2