接口和抽象类(一)-创新互联
抽象类是带有Abstract关键字的class,抽象类可以包含字段,属性,普通方法,事件及特殊的抽象方法
公司主营业务:成都做网站、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出双流免费做网站回馈大家。接口是带有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接口,接口是可以实现多个的,而类只能继承一个。
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
当前标题:接口和抽象类(一)-创新互联
文章网址:http://ybzwz.com/article/diided.html