本帖最后由 lizhi145 于 2010-04-09 10:21:34 编辑

解决方案 »

  1.   

    看情况了
    不过一般写成这样了就是为了多态的
    那当然就 Animal a = new Lion("雄狮"); 了
    要不代码写成这样就是多余
      

  2.   

    一般会在别的地方有类似下边的代码
    public void Action(Animal a){
       a.eat();
    }
      

  3.   

    楼上的意思就是用Animal a = new Lion("");这种情况用得较多。可以看到楼上这么写的好处了把。因此会选择这种方法来处理。
      

  4.   

    多用“Animal a = new Lion("雄狮");”多态·
      

  5.   

    既然你使用了继承,说明你的需求里不光有 Lion 还有 Wolf 等,至少将来有添加的可能。
    如果直接 new 感觉没什么不同,但如果使用 facotry, 就应该是:
    Animal a = facotry.create(animalName); 
      

  6.   

    真的要看情况呀。
    要多态时,会用Animal a = new Lion("雄狮"); 
      

  7.   

    这个要具体根据项目来对待,不过一般情况下都会用Animal a = new Lion("雄狮");这也是为了以后扩展方便!
      

  8.   

    尽量用“Animal a = new Lion("雄狮");”这种语句。一是扩展起来方便;二是即便要调用子类中独有的方法可以强制类型转换为子类,如下:if(a instanceof Lion){
        Lion l = (Lion)a;
        l.<子类中独有的方法>;
    }
      

  9.   

    一般将具有相同方法和属性的类抽提出来作为父类,
    在生产实践中子类继承父类多数是为了继承父类的属性和方法,
    很简单的例子:swing编程,线程(继承Thread),
    很少用到多态那样的定义。结论:前者用得少,后者用得多