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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李京 中级黑马   /  2012-9-8 20:17  /  1499 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李京 于 2012-9-8 22:45 编辑

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

3 个回复

正序浏览
楼主:
首先我们查阅API发现List集合没有构造函数,所以List是不能创建对象的,
并且List中也没有静态的方法,所以List方法要通过他的实现类来实现,
发现List下面有很多实现类,像ArrayList  LinkedList等,发现这些类有构造函数,
所以可以通过创建对象来调用里面的方法。
所以List相当于一类类,使用的时候要知道具体需要它里面的哪个实现类,
通过实现类再创建对象,调用方法
回复 使用道具 举报
接口是可以声明引用的,但不能建对象,所以可以 Runnable x;     List  x;
但是不能创建对象,所以不有new List, new Runnable

回复 使用道具 举报
    为什么有时候要实现了接口或者父类的方法需要implements 、extends
  
     因为接口中的方法是向上抽取而来的,里边没有方法体,实现接口后可以增加程序的扩展性。至于继承extends 就是要从父类中获取已有的方法,
   提高代码的复用性、扩展性。

   Thread 在使用时候需要 classX extends Thread ,Runnable 也是需要继承,而List接口,我可以直接定义自己的Class X,
   然后就是用List list= new Arraylist自己定义的Class不需要继承关键字,是不是因为构造的问题。

   
   楼主, List 是个接口,(用List list= new Arraylist) 其实你是用到了多态,接口类对象引用指向了子类对象,
   ArrayList 是List的实现类,你创建对象这当然是无可厚非的。比如:
   
interface USB
{
        public void open();
        public void running();
}

class Mouse implements USB
{
        private String bandon;
       
        Mouse(String bandon)
        {
                this.bandon = bandon;       
                System.out.println("bandon:"+bandon);
        }       
        public void open()
        {
                System.out.println("mouse open");
        }

        public void running()
        {
                System.out.println("mouse running");
        }
}

class  BookPC
{
        public static void main(String[] args)
        {
                USB  u = new Mouse("罗杰");
                o.running();
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马