zoukankan      html  css  js  c++  java
  • c#抽象类和接口的简单举例

      1. 个性大于共性。   

      2. 差异较大的个性间具有某些相同的行为。   

      3. 相同行为的实现方式有较大区别。     

     给你三个对象,分别是鲫鱼、鲤鱼、金鱼,仍然让你设计基类来概括它们之间的联系,那么你第一个意识到的肯定是它们都属于鱼类,其次是他们游泳的方式可能稍有差异,这时就应当使用抽象基类而不是接口,对比着上面的例子,原因有三条:

    interface ISwim  
    {
    void Swim();
    }
    public class Person : ISwim
    { public void Swim()
    { //Swimming in person's style.
    }
    }
    public class Frog : ISwim
    { public void Swim()
    {
    //Swimming in frog's style.
    }
    }
    public class Fish : ISwim
    { public void Swim()
    {
    //Swimming in fish's style.
    }
    }

     1. 共性大于个性    2. 共性相同的个体间必然具有相同的属性与行为     3. 相同行为的实现方式具有一定区别 

    abstract public class Fish 
      {      
    abstract public void Swim(); 
      }     
    public class 鲫鱼 : Fish  
     {   
       public override void Swim()    
     { 
         //Swim like a 鲫鱼    
     }  
     }      
    public class 鲤鱼 : Fish  
     {    
      public override void Swim() 
        {  
        //Swim like a 鲤鱼   
      }    
    }   
    public class 金鱼 : Fish  
     {     
     public override void Swim()     
    {     
     //Swim like a 金鱼    
     }   
    }    

    观 察在使用接口或是使用抽象基类的几条理由中,第三条理由其实是一样的,它所描述的是面向对象中多态的概念,即通过覆盖父类的方法来实现,在运行时根据传递 的对象引用,来调用相应的方法。第二条理由开始产生分歧,接口更加强调了继承对象间具有相同的行为,而抽象类同时还强调了继承对象间具有相同的属性。而真 正将接口与抽象基类区分开的则是理由  一,归纳如下:      当在差异较大的对象间寻求功能上的共性时,使用接口。      当在共性较多的对象间寻求功能上的差异时,使用抽象基类。

  • 相关阅读:
    二、跳转指定页面的JS代码
    一、常规的JS页面跳转代码
    您在前一家公司的离职原因是什么?
    如果你在这次面试中没有被录用,你怎么打算?
    如果你在这次面试中没有被录用,你怎么打算?
    针对你们单位业务工作中出现的问题,你提出了一些很好的建议,得到了同事们的赞同,但你的领导并不满意。在这种情况下,你怎么办?
    进程与线程的区别
    work13
    work12
    day09
  • 原文地址:https://www.cnblogs.com/dandandeyoushangnan/p/4545157.html
Copyright © 2011-2022 走看看