Interface and Abstract Class
2016-03-02 16:32
239 查看
这个话题是C#开发面试题必问的一道经典题目,接下来谈一谈我自己的理解
1.接口(Interface)就像是一个本书的目录,一眼就能看出这本书有哪些章节,规定好这本书要阐述的大概意思,而具体内容要到各个章节分别去看,并且如果你要发布这本书就必须把每个章节的内容都写完,当然你也可以删除某些章节
特点:
a.接口中只能包含方法声明,只能通过子类继承之后重写后使用
b.子类继承接口之后,需要实现所有接口中未实现的方法。
b.接口不能被实例化,接口中不能包含常量,字段,构造函数,析构函数,静态成员
d.接口支持多继承,回调
e.接口可以作用于值类型和引用类型
2.抽象类(Abstract Class)就像是一个模型,不管你要做什么都要先套用(Inhert)这个模型(基类),这个模型的具体结构使用的时候再具体实现,当然也可以有具体实现的部分结构,举个例子:如果你有一个飞机的抽象类,那这个抽象类里面可以有机身,轮子,机翼,座位,地毯等属性,当你要造一架战斗机的时候,可能抽象类厘原本定义的机身长度是客机的,那么需要重新定义(override)成战斗机的机身长度,地毯都可以用那就直接使用。
特点:
a.抽象类中声明的抽象方法,不包含实现,可以看作虚方法,也可以存在已实现的方法,如果该方法声明为virtual,则可以选择在子类中重写(override)该方法或不重写
b.抽象类不能被实例化,只是把抽象类的指针指向子类,从而实例化子类,且该子类可以使用抽象类中的构造函数
c.子类继承抽象类,就必须实现其父类中的所有抽象方法
d.抽象类不支持多继承,回调
e.抽象类只能作用于引用类型
1.接口(Interface)就像是一个本书的目录,一眼就能看出这本书有哪些章节,规定好这本书要阐述的大概意思,而具体内容要到各个章节分别去看,并且如果你要发布这本书就必须把每个章节的内容都写完,当然你也可以删除某些章节
特点:
a.接口中只能包含方法声明,只能通过子类继承之后重写后使用
b.子类继承接口之后,需要实现所有接口中未实现的方法。
b.接口不能被实例化,接口中不能包含常量,字段,构造函数,析构函数,静态成员
d.接口支持多继承,回调
e.接口可以作用于值类型和引用类型
2.抽象类(Abstract Class)就像是一个模型,不管你要做什么都要先套用(Inhert)这个模型(基类),这个模型的具体结构使用的时候再具体实现,当然也可以有具体实现的部分结构,举个例子:如果你有一个飞机的抽象类,那这个抽象类里面可以有机身,轮子,机翼,座位,地毯等属性,当你要造一架战斗机的时候,可能抽象类厘原本定义的机身长度是客机的,那么需要重新定义(override)成战斗机的机身长度,地毯都可以用那就直接使用。
特点:
a.抽象类中声明的抽象方法,不包含实现,可以看作虚方法,也可以存在已实现的方法,如果该方法声明为virtual,则可以选择在子类中重写(override)该方法或不重写
b.抽象类不能被实例化,只是把抽象类的指针指向子类,从而实例化子类,且该子类可以使用抽象类中的构造函数
c.子类继承抽象类,就必须实现其父类中的所有抽象方法
d.抽象类不支持多继承,回调
e.抽象类只能作用于引用类型
相关文章推荐
- 面向对象编程(OOP)
- 第13章 综合技术
- rsync使用时的常见报错问题解决解释
- Poj 2299 Ultra-QuickSort【逆序数】
- 如何查看android.jar中的xml文件
- 【AOP系列】(四)—采用Spring的静态配置文件实现AOP
- 74.Which statements are true regarding single row functions? (Choose all that apply.)
- 【Linux】——搭建redis
- 新学期对软件工程这门课程的看法
- IOS--Operation Object基础
- Spring IOC的配置使用(转)
- ASP.NET Web API 简介
- Iptables之FORWARD转发链
- DataTable常用方法属性
- ffmpeg的php扩展 在64位系统下的安装
- Spring事务管理之HibernateTransactionManager
- MySql
- UE3 Animation Compression Technical Guide
- 多进程通信
- 使用手机号登录、注册、重置密码