温故知新---抽象类和接口的异同
来源:互联网 发布:如何知道别人网络密码 编辑:程序博客网 时间:2024/04/29 19:28
【概念定义】
抽象类(abstract class):抽象类通常代表一个抽象的概念,是对不能具体实例化而又具有意义的一种类的抽象。比如狮子老虎是一种动物,对它们进行抽象得到抽象类动物类,但是动物类是不能被实例化的。
抽象类的界定:如果类中至少具有一个抽象方法(可以含有一般方法),那么它就是抽象类。这个抽象方法需要在被子类继承时必须重写。
接口(interface):接口是一种公共方法或规格的集合,它没有修饰符和方法体(方法的具体实现),它只能被实现。
接口的作用:接口为类的实现提供了一个接口,对方法和实现进行了解耦。多个类可以同时实现一个接口,实现接口的类必须实现接口中的属性和方法。
【相似】
1。都不能被实例化。
2。都包含虚方法或抽象方法。
3。可以通过继承和实现的方法实现其抽象方法。
【区别】
形态上的区分:
1.抽象类可以包含一些方法的具体实现,而接口里只能有方法。
2.抽象类可以被子类至少部分实现,接口则是全部实现。 3.两者和类的关系:一个类只能继承一个抽象类;多个类可以实现一个接口。
实现上的区分:
1,概念上讲,接口是对一组类的公共行为的一种抽象,而抽象类是对一组类的抽象。例如:狮子老虎都具有叫、跑的方法行为,抽象出来就是接口;而对狮子老虎抽象出的动物类就是抽象类。
2,如果行为跨越不同类的对象,使用接口;如果行为属于一些类似的对象,使用抽象类。
例如:对于叫这个方法,如果实现的对象是狮子老虎这类属于动物的,适合用抽象类,因为他们都可以继承动物抽象类;但是如果实现的对象包括动物、人、机械等不同类别的,适合用接口,因为多个类可以同时实现接口。
感受:从这个角度来说,它其实默认的是对已确定的类的区别。比如老虎和狮子,它们可以抽象成动物类,将虚方法写入动物类,被子类继承。但是换个角度想,将动物和人抽象,它们都是生物类,可以将叫的虚方法写入生物类,这样的话,仍然可以使用抽象类。
也就是说,如果对于已经确定了的类(不会改动数量或类别),可以知道都有什么类,那么它就可以进一步抽象使用抽象类;但是如果是对具体的类的数量和种类不清除的情况下,最好使用接口。因为接口可以对多种类开发端口。这也反映了它们的一个特性:接口是自上而下的设计,抽象类是自底向上的抽象。
3.接口比抽象类更加灵活。
针对扩展修改这一方面,如果出现了新的需求,尤其是在对同一方法实现的对象的类别发生了改变,那么使用抽象类是不合适的。接口可以很好的应对需求的改变。
- 温故知新---抽象类和接口的异同
- 温故知新--接口和抽象类的区别
- 抽象类和接口,类的异同
- 抽象类和接口的异同?
- 抽象类和接口的异同
- 接口和抽象类的异同
- 抽象类和接口的异同
- 抽象类和接口的异同
- 接口和抽象类的异同点
- 接口和抽象类的异同
- 抽象类和接口的异同点
- 关于抽象类和接口的异同
- Java接口和抽象类的异同
- 接口和抽象类的异同
- 抽象类和接口的异同
- 抽象类和接口的异同、区别
- 抽象类和接口的异同
- 接口和抽象类异同
- Reverse Nodes in k-Group
- 个人感觉常用的 VI 命令整理,让手指飞起来吧
- ssdt与shadowssdt区别
- 【机器学习系列】机器学习界大牛林达华推荐的书籍
- OpenSSH中SFTP协议实现相关程序
- 温故知新---抽象类和接口的异同
- 2013 ACM/ICPC Asia Regional Chengdu Online
- python的【字符串string】:运算符、内建函数
- UITableView隐藏多余的分割线
- xp3的_eprocess的利用
- ruby 加密工具ruby encoder 使用相关。
- java之 ------ DAO设计模式的【详解】及常见设计模式的【应用】
- java-查找字符串
- 安卓环境搭建