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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵嘉男 中级黑马   /  2012-4-25 20:28  /  2129 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么有时候要实现了接口或者父类的方法需要implements 、extends 而有些接口可以直接构造对象,比如,Thread 在使用时候需要 classX extends Thread ,Runnable 也是需要继承,而List接口,我可以直接定义自己的Class X,然后就是用List list= new Arraylist自己定义的Class不需要继承关键字,是不是因为构造的问题

4 个回复

倒序浏览
继承是为了要覆写父类的方法,实现某接口是为了实现某方法。而你你使用List接口时,使用的实现类是ArrayList,你不会去覆写ArrayList里面的方法吧,
既然不覆写,也不实现什么抽象方法,你用不着去implements或者extends。
回复 使用道具 举报
直接拿来用就ok,继承和实现接口只是为了体现出多态,好调用其中的方法(说的是你覆写过了或实现过的)。
赞同否?
回复 使用道具 举报
List list= new Arraylist()是多态,ArrayList类是List的子类,ArrayList本身已经继承了List,所以不需要继承。你说的Thread 在使用时候需要 classX extends Thread是自定义一个线程,这个线程需要继承Thread类的方法来实现线程。
回复 使用道具 举报
咦,我来说说吧!
List list= new Arraylist()其实是多态的运用。
API里面的描述是:java.util   接口 List<E>
所有超级接口:
Collection<E>, Iterable<E>
所有已知实现类:
AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector

它的以实现子类中包括ArrayList。所以,你的代码的
list引用指向的是它的子类对象

点评

能否認識一下,看過你幾次回答,感覺你的基礎很扎實,我還在學習基礎,希望以後可以和你多交流!我的QQ號:826288180.謝謝  发表于 2012-4-25 23:38
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马