抽象类(abstract class)和接口(Interface)的区别
来源:互联网 发布:极客学院python百度云 编辑:程序博客网 时间:2024/05/16 03:49
前言
- 抽象类(abstract class)和接口(Interface)是Java语言中对于抽象类定义进行支持的两种机制,赋予了Java强大的面向对象能力。
- 二者具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstractclass和Interface的选择显得比较随意。其实,两者之间还是有很大的区别的。
- 本文将对它们之间的区别进行剖析,并提供一个在二者之间进行选择的依据。
抽象类是什么?
本文中的抽象类表示的是一个抽象体,并非直接从abstract class翻译而来,而abstract class仅仅是Java语言中用于定义抽象类的一种方法,请读者注意区分)
在面向对象的概念中,所有的对象都是通过类来描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类的定义
是对一系列看上去不同,但是本质上相同的具体概念的抽象,往往用来表征我们在对问题进行分析、设计中得出的抽象概念- 比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们本质上又都属于这样一个概念:形状,形状这个概念在问题领域是不存在的,所以形状就是一个圆形、三角形的抽象类。
- 正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能实例化的。
为什么要有抽象类?
- 用于类型隐藏
在面向对象领域,抽象类主要用来进行类型隐藏。我们可以构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类。 - 用于拓展对象的行为功能
这一组任意个可能的具体实现则表现为所有可能的派生类(子类),模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;同时,通过从这个抽象体派生,也可扩展此模块的行为功能。
如何进行抽象类的定义?
抽象类(abstract class)和接口(Interface)在Java语言中都是用来进行抽象类定义的两种主要方法
抽象类(abstract class)
定义:包含抽象方法的的类是abstract class
用abstract关键字修饰
作用:abstractclass是为了把相同的东西提取出来,即重用
使用abstractclass语法规定
Interface
定义:比abstract class更加抽象,是一种特殊的abstract class
用Interface关键字修饰
作用:Interface是为了把程序模块进行固化的契约,是为了降低偶合
- 使用Interface的语法规定
实例
下面以定义一个名为Demo的抽象类为例来说明这种不同。
- 使用abstract class的方式定义Demo抽象类:
abstract classDemo{abstract void method1();abstract avoid method2();}
- 使用interface的方式定义Demo抽象类:
interface Demo{void method1();void method2();}
二者的相同点
都不能被实例化
二者的区别
总结
本文对抽象类(abstract class)和接口(Interface)进行了简单的总结,有兴趣可以继续关注Carson_Ho的安卓开发笔记,不定期分享关于安卓开发的干货
1 0
- Java 接口(interface)和抽象类(abstract class)区别
- Java 接口(interface)和抽象类(abstract class)区别
- 抽象类(abstract class)和接口(interface)的区别?
- 类(class),抽象类(abstract), 接口(interface)的关系和区别
- Java抽象类(abstract class)和接口(interface)的区别
- 抽象类(abstract class)和接口(Interface)的区别
- 抽象类(abstract class)和接口(Interface)的区别
- (2.1.15)抽象类abstract class和接口interface的区别
- 抽象类(abstract)和接口(interface)的区别
- 抽象类(abstract)和接口(interface)的区别
- 抽象类(abstract)和接口(interface)的区别
- 抽象类(abstract)和接口(interface)的区别
- 抽象类(abstract)和接口(interface)的区别
- 抽象类(abstract)和接口(interface)的区别
- 抽象类(Abstract Class)与接口(Interface)区别
- 抽象类(abstract class)和接口(interface)分析
- 抽象类(abstract class)和接口(interface)
- 接口和抽象类(abstract class and interface)
- C++中Struct与Class的区别
- 数学模板-欧拉函数
- Retrofit2.0学习之GET请求
- linux 新建挂载空闲磁盘空间
- mysql设置远程访问
- 抽象类(abstract class)和接口(Interface)的区别
- iOS自动化打包脚本(shell)
- JVM系列二:GC策略&内存申请、对象衰老
- python+request爬取电影网站
- Jenkins环境搭建
- Python中元组,列表,字典的区别
- canvas.drawPath 没起作用
- 在Android M及更高版本中使用 Settings.System 抛出异常"You cannot keep your settings in the secure settings. "
- C++软件工程师笔试题附答案