前天看见一个帖子"a b = new c(); abc他们是什么关系?"
关系我能理得清楚,但是不明白这么写有什么优点
能优化程序吗?

解决方案 »

  1.   

    为什么不直接写c b = new c(); 
      

  2.   

    人 人1=new 中国人()----------》中国人吃饭上中国菜,给筷子人 人2=new 外国人()----------》老外吃饭上西餐,给刀叉
       吃饭 (人 obj)
       {
          obj.吃饭() ----------------》甭管他是啥人,反正你要吃饭,至于上啥菜,的看obj是中国人还是外国人
       }吃饭(人1)----------》人1是中国人,自然上中国菜
    吃饭(人2)-----------》人2是老外,我们上西餐
      

  3.   

    a b = new c(); abc他们是什么关系晕,A是类,B是变量名,C是A的子类,这样写不能优化程序,
    他的目的是为了实现多态性,
    写个例子你就明白了public void Invoke( A aClass)
    {
         A.Invoke();    // 现在假定A类里定义了一个抽象方法Invoke,
    }然后假设,B,C,D,E,F都是继承A类,并且都实现了抽象方法Invoke,现在你就可以这样,Invoke(new B());
    Invoke(new C());
    Invoke(new D());
    Invoke(new E());
    Invoke(new F());
      

  4.   

    里氏替换原则鼓励用抽象类或者接口来约束方法 所以写成了 LZ 的 ABC是在设计模式里用的基本原则
      

  5.   

    2楼举的例子简单明了
    在面向对象当中,"A b = new C();"这种用法是很常见的。
    在工厂模式,面向接口编程,抽象类的使用中经常会用到
      

  6.   

    a b = new c(); 
    如果a 是类 那c就是子类 
    如果a 是接口 那c就是实现类 
    b是a的实例 
      

  7.   

    a b = new c(); abc他们是什么关系 晕,A是类,B是变量名,C是A的子类,