java初学者 加入小组

293个成员 64个话题 创建时间:2015-02-03

【求指教】关于抽象类实现接口时,需要覆盖接口中的抽象方法,我的代码里有个疑问

发表于2016-02-25 2209次查看

如下:

/定义一个接口
interface A
{
    public void fun1();
    public void fun2();
    public void fun3();
}

// 定义一个抽象类 ,并实现接口A

abstract class B implements A
{
    public void fun1()
    {
        
    }
    public void fun2()
    {
    }

    
}

//定义一个子类
class C extends B
{
    public void fun1()
    {
        System.out.println("4 C、public void fun1");
    }
    public void fun3()
    {
        System.out.println("5 C、public void fun3");
    } 
    
}
public class ooDemo12
{
    public static void main(String args[])
    {
        A a=new C();
        a.fun3();
    }
}    

结果是

谁能告诉我,既然我在抽象类里没有fun3()这个方法,为什么没有提示错误,而且还能通过C类对象进行实例化,打印出 fun3()   这是为啥

求好心人指点  谢谢

1回复
  • 2楼 刘璇 2016-04-22

    因为你在C中把接口A中的fun3抽象方法覆写了,B中覆写了抽象fun1和fun2,接口A中的三个抽象方法都覆写了当然没有错误,C类继承B、B又实现接口A,B只是相当于是一个中间转换。

发表回复
你还没有登录,请先 登录或 注册!