父类的引用指向子类的对象
如:Collection c=new ArrayList(); 
这样做的深层意义是什么?

解决方案 »

  1.   

    这样可以充分利用JAVA多态的特性,可以参照依赖倒转原则的说明。
      

  2.   

    比如:Collection是ArrayList和LinkedList的借口
    Collection c=new ArrayList(); (或者new LinkedList();)
    c.sort();这样你只需要修改new后面的内容  就可以实现不同的排序方法
      

  3.   

    举个简单列子,一个公司要招程序员(父类),有java程序员(子类),.net程序员(子类),c++程序员(子类)。这个公司提供一个新增的方法,你是愿意单独为每种程序原单独写一个方法还是愿意只提供一个方法给所有的程序员用?
      

  4.   

    http://blog.csdn.net/gideal_wang/article/details/4913965看下这篇文章吧,很充足了。
      

  5.   

    意义可大了,打个简单点的比方。
    爸爸 王小二=new 大儿子();
    爸爸 王小二=new 小儿子();
    那我现在叫大儿子过来,王小二可以过来,我叫小儿子过来,王小二也可以过来方便吧。
    在做项目的时候,  爸爸 王小二; 这步是我写的;后面  王小二=new 小儿子();
    或者new 大儿子()不一定是我写,那我怎么知道他到底要的是大儿子还是小儿子,
    所有我声明他们爸爸的引用,你叫大儿子和小儿子都ok。 
    我要是写具体的 小儿子 王小二=new 小儿子(),不是把别人限定死了吗。
    就算那两步都是你自己写,我项目做完了,我如果要修改的话,那我至少声明的那部分可以不动了吧。也就是说扩展了程序的 移植性和可维护性。
    百度说的
      

  6.   

    若要改成Collection c=new LinkedList(); 则引用c的地方不用变
      

  7.   

    左声明,右实现;
    声明接口,new实现
      

  8.   

    实现多态。
    如题:实际new出来的是ArrayList()
    实际用拿c来用的时候只能用Collection中的方法,必须向下转型才能用Arraylist中的方法