大话设计模式学习(三)—C#面向对象的基础知识

      今天来说下抽象类和接口

       抽象类:简单的说抽象与具体相对,是一个需要想象的概念。比如:在写程序的时候,动物可视为一个抽象类,但你能描述一个动物是什么样子么?很显然不能,但是我们能描述一直猫长什么样子。动物:抽象;猫:具体。

       特点:1、抽象类不能被实例化(动物不能实例化) 2、抽象方法必须是被子类重写的方法,而且抽象方法不含任何实现 3、如果一个类中有抽象方法,那么这个类一定是抽象类,不论其中是否含有一般方法。4、子类必须要(重写)覆盖其父类的抽象方法

       运用:抽象类通常代表一个抽象的概念,它提供了一个继承的出发点,但设计一个抽象类时,一定是用来继承的。

       好处:1、代码易读 2、代码复用 3、程序易扩展

       接口:接口是把隐式功能方法和属性组合起来,以封装特定功能的一个集合。一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。声明接口与声明抽象类完全相同,但不允许接口提供成员的任何实现方式。

        特点:1、接口可以看作虚的,即不能被实例化 2、包含未实现的方法 3、派生类必须实现未实现的方法 4 抽象类只允许定义属性、方法、索引器、事件等成员

 

       接口和抽象类的区别:

         相同点:1:都不能被实例化 2:都包含未实现的方法,需要子类来实现 3、抽象类可以给出一些成员的实现,但接口不能,需要被子类完全实现。

          区别:第一:类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象

                   第二:如果行为跨越不同类的对象,可以使用接口;对于一些相似类的对象,可以继承抽象类。

                   第三:从设计角度讲,抽象类是从子类中发现了共有的东西,泛化出父类,然后子类继承父类;而接口根本不知道子类的存在,方法实现还不确认,是预先进行定义的。

                   第四:.接口支持多重继承,而C#中,类之支持单一继承,接口实际表示的是一种承载能力,

                   第五:抽象类不能被密封。

                 抽象类和接口的使用:
         1. 如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本;
         2.如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口;
         3.如果要设计大的功能单元,则使用抽象类。如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类;
         4.抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。

        以下是我在网上看到的几个形象比喻。
        1.飞机会飞,鸟会飞,他们都继承了同一个接口“飞”;但是F22属于飞机抽象类,鸽子属于鸟抽象类;
        2. 就像铁门木门都是门(抽象类),你想要个门我给不了(不能实例化),但我可以给你个具体的铁门或木门(多态);而且只能是门,你不能说它是窗(单继承),一个门可以有锁(接口)也可以有门铃(多实现)。门(抽象类)定义了你是什么,接口(锁)规定了你能做什么(一个接口最好只能做一件事,你不能要求锁也能发出声音吧(接口污染))。

                   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值