`
yanfaguanli
  • 浏览: 660529 次
文章分类
社区版块
存档分类
最新评论

抽象和接口

 
阅读更多

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

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

3.如果类中包含抽象方法,那么类必须定义为抽象类。

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

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

Interface IFly
{
  Void Fly();
}

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics