抽象类和接口
来源:互联网 发布:电脑板绘软件 编辑:程序博客网 时间:2024/05/17 08:50
一.不同点:
(1)两者表达的概念不一样。类是对对象的抽象,可以把抽象类理解为把类当作对象,抽象成的类叫做抽象类.而接口只是一个行为的规范或规定。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“is a”的关系;而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”,是“like a”的关系。例如,狗是对于所有狗类动物的统称,金毛是狗,牧羊犬是狗,那么狗的一般特性,都会在金毛,牧羊犬中找到,那么狗相对于金毛和牧羊犬来说,就属于这类事物的抽象类型;而对于“叫”这个动作来说,狗可以叫,猫也可以叫。很明显,前者相当于所说的是抽象类,而后者指的就是接口。
(2)抽象类在定义类型方法的时候,可以给出方法的实现部分,也可以不给出;而对于接口来说,其中所定义的方法都不能给出实现部分。
(3)继承类对于两者所涉及方法的实现是不同的。继承类对于抽象类所定义的抽象方法,可以不用重写,也就是说,可以延用抽象类的方法;而对于接口类所定义的方法或者属性来说,在继承类中必须要给出相应的方法和属性实现。
(4)在抽象类中,新增一个方法的话,继承类中可以不用作任何处理;而对于接口来说,则需要修改继承类,提供新定义的方法。
(5)一个类一次可以实现若干个接口,但是只能继承一个父类
抽象类主要用于关系密切的对象,而接口适合为不相关的类提供通用功能 。抽象类是对根源的抽象。抽象类表示的是,这个对象是什么。 接口是对动作的抽象接口表示的是,这个对象能做什么 。
二.相同点:
(1)不能实例化;
(2)包含未实现的方法声明;
(3)派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);
三.抽象方法和虚方法:
抽象方法:
(1)使用abstract关键字 例如:public abstract bool Withdraw(…);
(2)抽象方法只能在抽象类中声明,抽象方法必须在派生类中重写
(3)抽象方法是可以看成是没有实现体的虚方法
如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其它一般方法。
虚方法:
(1)使用virtual关键字 例如:public virtual bool Withdraw(…);
(2)调用虚方法,运行时将确定调用对象是什么类的实例,并调用适当的覆写的方法。
(3)虚方法必须有实现部分,子类可以覆盖也可以不覆盖,根据取决于要求。
对抽象类和接口进行比较并不是强调用什么不用什么,而是要想方设法把这两种方法合理地运用到代码中去。
- 抽象接口和抽象类
- 接口和抽象类
- 接口和抽象类
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 接口和抽象类
- noip2007初赛-求字符串的逆序
- java多线程(四)synchronized关键字修饰方法
- 隔离网络的DHCP服务
- python parse HTML
- noip2007初赛-棋盘覆盖
- 抽象类和接口
- 44. UIPickerView ,UIDatePicker ,UISearchBar, UIWebView,UIBezierPath,UIProgressView
- Android SDK 下载目录文件夹意义详解
- 关于WSDL中的使用
- Android OnLowMemory和OnTrimMemory
- 用户控件
- discuz 研究(整理)
- Android开发应用汇总
- JAVA面向对象与内存分析