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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李晓旭 中级黑马   /  2012-3-12 23:27  /  1962 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李晓旭 于 2012-3-12 23:30 编辑

class Fu{ ......}

class Test extends Fu implements Runnable //Test类 继承了Fu父类 实现了Runnable接口
{
public void run()
{ ...... }
}
class Demo
{
public static void main(String[] args)
{
  Test t = new Test();
  new Thread(t).start();
}

public Thread(Runnable target)

参数:
target - 其 run 方法被调用的对象。

如果t是Runnable接口的子类对象,t又是Test类的对象,又是Fu的子类对象,这是不是就相当于一种多重继承(虽然java里面用extends,implements区别了两种概念)?
接口可以继承接口,但是类只能实现接口,这是不是一种变向的继承关系?
所以Test的对象才能叫Runnable接口的子类对象。




1 个回复

正序浏览
接口本来就是继承的另一种表现形式,接口的出现优化了c++中多继承的弊端
比如:
class fu1
{
   void show(){}
}
class fu2
{
   void show(){}
}
class zi  extend fu1,fu2,
{
}
这时候  zi。show()  是不是就不知道调用哪个了?  这是c++多继承最大的弊端
但是java的接口中  所有的方法都是abstract 的   是没有方法体的
  就算两个接口中有相同的方法,这个都不影响的  子类实现接口 调用方法 也不会出现像继承中  不知道该调用哪个的
     有一点要说的是  java确实存在着多继承  那就是接口和接口之间可以进行多继承的


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马