黑马程序员技术交流社区
标题:
继承与接口,斧正。。。
[打印本页]
作者:
牛合超
时间:
2013-3-11 20:59
标题:
继承与接口,斧正。。。
本帖最后由 牛合超 于 2013-3-12 12:49 编辑
要是一个类继承了一个类,同时实现了一个接口,
为什么implements 只能在extends 关键字之后,反过来为什么报错呢,,
作者:
李红志
时间:
2013-3-11 21:30
如果父类和接口有同样的方法的话 子类从父类继承的方法可以用来实现接口 所以要先继承了才好实现
你看下面Sub实现了Interf,不实现say方法编译也没错
Java code
public interface Interf {
public void say();
}
Objective C code
public class Sub extends Base implements Interf{
}
因为Base类实现了
Java code
public class Base {
public void say(){
System.out.println("speak");
};
}
但是即使是先implements再extends编译器如果愿意的话也一样能处理 我猜这样规定是为了告诉你这个先后顺序或者是利于阅读
作者:
杨玉辉
时间:
2013-3-11 21:37
反过来不就成了接口 继承 类了么
接口内 只有抽象abstract 的成员 没有具体方法,继续定义了子类可沿用或者覆写父类方法,接口没有具体方法 就没法继承
这种问题,就别较真,你跟自己过不去啊。没事别问为啥手写字,干嘛用键盘敲,虽然有了手写板,你一样可以输入内容一样。
作者:
唐永康
时间:
2013-3-11 22:02
要是一个类继承了一个类,同时实现了一个接口,
为什么implements 只能在extends 关键字之后,反过来为什么报错呢,,
这个问题其实在JAVA中不止出现一次,比如可变参数中也是这样的,int(int da,byte...d),这里也是可变的只能放在后面,因为后面的可变性比较大,而在你这个问题当中,
也是同样的道理,JAVA是单继承的,继承只有一个,而实现可以是多个,从由简单到复杂的角度说,当然是先把简单的写在前面,避免和后面复杂的或者是多的混合,容易造成
混乱。
作者:
张宁
时间:
2013-3-11 22:20
你说的应该是 zi extends fu implements interdemo 是正确的,但是 zi implements interdemo extends fu 就是错误的,对吗?
public class Outer {
public static void main(String[] args) {
Zi erzi = new Zi();
erzi.dajia();
erzi.eat();
erzi.shuaige();
}
}
class Fu{
public void shuaige(){
System.out.println("我是一个帅哥");
}
}
class Zi extends Fu implements chifan{
//如果这句话 implement和extends交换就是错的,子类继承父类实现接口, 这是java的语法规定。
public void dajia(){
System.out.println("我爱打架,但是不敢打我爸");
}
@Override
public void eat() {
System.out.println("我爱吃红烧肉");
}
}
复制代码
作者:
陈丽莉
时间:
2013-3-12 12:34
如果觉得答案满意,请将帖子分类改成【已解决】~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2