接口和抽象类(一)

抽象类是带有Abstract关键字的class,抽象类可以包含字段,属性,普通方法,事件及特殊的抽象方法

成都创新互联公司是一家网站设计公司,集创意、互联网应用、软件技术为一体的创意网站建设服务商,主营产品:响应式网站建设、高端网站设计成都营销网站建设。我们专注企业品牌在网站中的整体树立,网络互动的体验,以及在手机等移动端的优质呈现。成都做网站、网站建设、外贸营销网站建设、移动互联产品、网络运营、VI设计、云产品.运维为核心业务。为用户提供一站式解决方案,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏析悦目的作品,网站的价值服务。

接口是带有interface关键字并封装了对象一系列的行为,接口可以包含属性,方法,但不能包含字段和委托。方法不包含具体实现,不带public类似的关键字。

public class ApplePhone
    {
        public int Id { get; set; }
        public string Brand { get; set; }
        public void System()
        {
            Console.WriteLine("IOS");
        }
    }

public class Galaxy
    {
        public int Id { get; set; }
        public string Brand { get; set; }
        public void System()
        {
            Console.WriteLine("ANDROID");
        }
    }

 public class LumiaPhone
    {
        public int Id { get; set; }
        public string Brand { get; set; }
        public void System()
        {
            Console.WriteLine("WINDOWS PHONE");
        }
    }

这个时候就会大量的冗余代码,我们应该建一个基类定义Id和Brand 这2个属性,并定义一个抽象方法System(),为什么不定义虚方法,因为在这里每个子类的实现都不同的。所以最终我们应该建一个抽象类,如下

 public abstract class BasePhone
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public abstract void System();
    }
上面3个类继承自BasePhone

 public class ApplePhone: BasePhone
    {
        public override void System()
        {
            Console.WriteLine("IOS");
        }
    }
    
     public class Galaxy:BasePhone
    {
        public override void System()
        {
            Console.WriteLine("ANDROID");
        }
    }
    
      public class LumiaPhone:BasePhone
    {
        public override void System()
        {
            Console.WriteLine("WINDOWS PHONE");
        }
    }
    
    手机还有玩游戏功能,这个时候我们不应该在BasePhone加一个玩游戏的方法,因为玩游戏就是一种行为
    除了手机能玩游戏,电脑,平板都能玩游戏,那么这个时候我们就应该把玩游戏抽象成接口,而手机
    则实现了这个接口。
    //定义一个玩游戏的接口
    public interface IGame
    {
        void Game();
    }
public class LumiaPhone:BasePhone,IGame
    {
        public override void System()
        {
            Console.WriteLine("WINDOWS PHONE");
        }
        public  void Game()
        {
            Console.WriteLine("play WINDOWS PHONE games");
        }
    }

其他二个子类也是同样实现玩游戏功能,同样手机还有上网等等功能,但上网并不是手机独有的行为,所以我们可以增加一个IOnline接口,接口是可以实现多个的,而类只能继承一个。


当前题目:接口和抽象类(一)
当前链接:http://pwwzsj.com/article/ieihce.html