A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 清风有意 中级黑马   /  2014-4-1 16:52  /  776 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


代码如下
interface Inter{
        public abstract void show();
}
interface InterA{
        public abstract void show();
}
class Demo{
        public void show(){
                System.out.println("aaaaaa");
        };
}
class Test extends Demo implements Inter,InterA{
        public void show(){
                System.out.println("cccccccc");
        }
}

public class MyTest{
        public static void main(String[] args){
                Test t1=new Test();
                t1.show();
        }

}
这个Test show()方法复写了父类的show方法,而且实现了接口中的show方法。编译运行肯定能通过。
接下来,将Test中的public void show()方法删除,那么接口中的抽象方法是否会被父类中的show()方法覆盖呢?其他不变,编译运行通过,可以建立对象。可见父类中的方法就是自己的方法。

3 个回复

倒序浏览
通常这种情况 应该直接用父类实现接口
回复 使用道具 举报
osully 发表于 2014-4-1 17:12
通常这种情况 应该直接用父类实现接口

不知考虑过这种情形吗?
父类如果实现了接口1.如果父类想要建立对象,那么就需要对接口中的方法进行复写。而子类中也都具有了父类接口中的方法。
2.如果父类不复写接口的抽象方法,那么这个父类就是抽象类,必须子类复写方法。但是如果需求是只需要父类中没有接口方法的方法体呢?  
当然,这个子类也可以当成是某一个类的父类了!

不知这个通常情况下是指?
回复 使用道具 举报
意思是 你这个子类又复写父类方法 又实现接口方法
这个情况
通常的写法是父类去实现接口,
而子类如果想要方法内容不一样 就去复写父类
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马