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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 全海波 中级黑马   /  2012-7-20 06:40  /  3592 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

8 个回复

倒序浏览

回帖奖励 +2

感觉是可以的,但是这样子不是很麻烦,student子类中的run方法覆盖了person中的run方法,person中的run方法又覆盖了Thread中run方法,而且创建线程对象的时候多了很多没必要的数据,占用资源。操作也不方便。所以不建议这样做。
回复 使用道具 举报
尽量少用继承,继承关系一多,代码冗余,容易出错。理论上是可以的,但是为什么不直接用接口实现呢?
回复 使用道具 举报
继承是is,接口是like。要实现多线程,通过继承方式只要是Thread的一个子类就可以复写Thread的run方法,创建新的线程。当然,这会像楼上所说的,代码会冗余,更重要的是扩展性不好。而接口主要是用来扩展程序的功能的,用接口实现的话,该类在具备其父类的属性和行为外,还实现了接口的run方法,可读性大大提高。
回复 使用道具 举报
  1. //做个试验呀,就显而易见了。
  2. A extends B
  3. B extends C
  4. DuoJiCheng  extends A
  5. 类DuoJiCheng可以调用ABC中的方法,说明可以实现多层继承
  6. 但是你不觉得这样做很繁琐吗?
  7. //----------------------代码-----------------------------------------
  8.         public class DuoJiCheng extends A{
  9.                 public static void main(String [] args){
  10.                       new DuoJiCheng().printA();//A
  11.                         new DuoJiCheng().printB();//B
  12.                         new DuoJiCheng().printC();//C
  13.                 }
  14.         }
  15. class A extends B{
  16. public void printA(){System.out.println("A");}
  17. }

  18. class B extends C{
  19. public void printB(){System.out.println("B");}
  20. }

  21. class C{
  22. public void printC(){System.out.println("C");}
  23. }
复制代码
回复 使用道具 举报
Java已经提供了接口这个非常方便的方法,为什么非要用继承呢?
我记得毕老师同样也说过,不要把2个没有关系的类,因为某种原因,非要让它们产生子父类关系。
回复 使用道具 举报
多层继承当然是可以的,不能多继承指的是不能在一个类中有多个直接父类
回复 使用道具 举报
比如有A,B,C,D,E五个类。虽不支持多继承,但是可以通过多层继承的方式来通过E来实现/复写A中的方法。简而言之,A中有run()方法,那么可以B->A这样B里就有了父类的run(),同理C->B,D->C,E->D.。多层继承。不过一般没人这么干。
回复 使用道具 举报
hzw@ql 中级黑马 2015-6-19 19:41:10
9#
说好有奖的啊。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马