抽象和接口

  昨晚挑灯夜战收获真的不少,不但理解了重载和重写,对抽象和接口的认识也豁然开朗,让我把自己的小喜悦和大家分享下吧。

  先说抽象,抽象类有三个要求:1.抽象类不能实例化,比如大家可以知道“猫”长什么样,“狗”长什么样,却无法表达出他们的抽象类“动物”长什么样;2.抽象方法必须被子类重写,通过重写实现多态,但不明白抽象方法abstract和虚方法virtual有什么不同;3.如果类中包含抽象方法,那么类必须定义为抽象类。

  抽象方法一般用于重构,比如我们实现了“猫”和“狗”这两个类,发现他们有很多相同的地方,比如都会跑,都会叫,都能吃东西。如果在每个类中依次实现,代码就显得有些冗余,此时我们可以从全局出发,生成一个抽象类“动物”,在“动物”中抽象出它们的共同特性,这样在子类重写父类即可,减少了代码的重复。它使用于两个相关的类之间的抽象。

  再说接口,它从局部出发,使用于两个不相关的类之间的实现。比如“超人”和“孙悟空”都会飞,可他们没什么共同特性呀。这时我们可以声明一个“飞”的接口:

Interface IFly
{
  Void Fly();
}

   在“超人”和“孙悟空”中分别实现“飞”这个接口,这样就能解决上述问题了。

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值