抽象和接口

来源:互联网 发布:师洋淘宝一年赚 编辑:程序博客网 时间:2024/06/08 05:12

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

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

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

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

Interface IFly{  Void Fly();}

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

原创粉丝点击