黑马程序员技术交流社区

标题: 为什么子类实现接口不能用super [打印本页]

作者: 黑马-张辉    时间: 2013-8-24 15:50
标题: 为什么子类实现接口不能用super
本帖最后由 丿Show╭尛__儍 于 2013-8-27 10:33 编辑

子类继承父类,父类如果是抽象的用super.调用属性也是可以的,但是接口不行.第一次发代码,不知道怎么弄,用QQ截图上去的{:soso_e127:},放在附件里了好像.

另:去android板块答题给不给技术分啊,云流太少了...

5QDSSPC$R3NNW%LK5TVR7LE.jpg (37.37 KB, 下载次数: 353)

5QDSSPC$R3NNW%LK5TVR7LE.jpg

作者: 小时晚er    时间: 2013-8-24 16:42
继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,
子类继承了父类,在子类中想要使用父类中的属性,可以用super.[属性名]来调用,
接口是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
而在接口用,是没有这个方法的,接口不能被实例化,接口中可以定义常量,不能定义变量,接口中属性都会自动用public static final修饰,接口中属性都是全局 静态常量,接口中的常量必须在定义时指定初始值

作者: 暮雨默    时间: 2013-8-24 22:22
接口是限定类的制作的,类与接口之间并不是继承关系,而是类实现接口中定义的功能。所以类与接口之间不是继承关系,也就没有子类与父类的概念。而且类实现接口的关键字是implement,类继承类的关键字是extends,所以在接口中使用super关键字会报错。
作者: straw    时间: 2013-8-25 02:19
首先在java所有类中接口和注解是没有继承概念的,原因是它们没有方法实体,定义的方法都是由实现类去具体实现的,所以继承在接口中没有意义.
在子类中可以使用super去访问父类的共性成员,super是指向直接父类间接父类的全部共性成员,不是指向实现的接口,再说了接口中没有具体方法,就算能指向去访问也是没有意义的!所以编译器当然会报错了!
作者: 王广亚    时间: 2013-8-27 01:07
本帖最后由 王广亚 于 2013-8-27 01:15 编辑

第一:如果只看你的题目不看内容的话,“为什么子类实现接口不能用super”这句话是有毛病的;
         题目说到子类,既然是子类那他肯定继承了父类,既然继承了父类为什么不能用super呢,是可以用的
         
第二:从你的内容上来看,你问的应该是“为什么一个类实现接口不能用super”

回答你的问题:
你就记着接口没有构造函数,所以接口就不可以创建对象,而super是指的父类的引用(父类的对象)所以子类实现接口不能用super。
再说super只能用在子类调用父类成员之间,对实现不适用。
对构造函数:
还有就是就算一个类只是实现了接口,那么它默认还是有super语句的,因为任何类都是Object的子类。

作者: 黄文伯    时间: 2013-8-27 08:45
亲,如问题已解决请将分类的“未解决”改为“已解决”。
以后的问题贴也要及时更改分类哦~
作者: 秦大忠    时间: 2013-8-27 11:43
super的定义就是指向关键字所在类的父类,用来引用父类中的成员变量或方法,上面代码中Inter是Demo类的父类吗?那是接口,你是实现了接口又不是继承父类,super也有它自己的使用局限的,我想你可能是继承父类和接口的实现这些概念还没搞清楚,建议看书,记忆来得比较深刻
作者: 13453150836    时间: 2015-10-20 00:07
一个接口的子接口和实现类的关系




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