北京理工大学金旭亮老师C#(72—Interface)

先从“继承”聊起......

  • “继承”是对现实世界中“是一种(IS_A)”关系的模拟。
  • 鸭子“是一种”鸟。(Duck——>Bird)(三角箭头符号代表继承)

现在试着为以下场景建立一个面向对象的编程模型

鸭子是一种鸟,会游泳,同时又是一种食物。

一种设计方案是:Duck——>Food,同时Duck——>Bird

  • “会游泳”这个方法放在哪个类中?
  1. 放在Duck类中:并不是只有鸭子一种鸟会游泳。
  2. 放在Bird类中:并不是所有鸟都会游泳。
  • C#/Java等编程语言不支持多继承

解决方案

将食物的特性单独抽取出来

  • IFood接口抽象出“可食用”特性
public interface IFood
{
    void Cook();
}
  • ISwim接口抽象出“会游泳”特性
public interface ISwim
{
    void Swim();
}

C#中接口的特点

  • 使用interface关键字定义接口
  • 接口的名字通常以“I”打头
  • 接口中的方法只有声明,不包容任何代码

解决“鸭子”建模问题

  • 鸟是一种抽象的概念,所以设计为抽象类,同时鸟会飞,不同鸟的飞翔方式不一样,所以fly方法是Bird类的抽象方法
  • 食物应该实现IFood接口
  • 水鸟应该实现ISwim接口
  • 鸭子是一种鸟,会游泳,北京烤鸭很好吃
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值