Java千百问_05面向对象(005)_接口和抽象类有什么差别
1、接口和抽象类有什么差别
在Java语言中。抽象类abstract class和接口interface是抽象定义的两种机制。
正是因为这两种机制的存在,才赋予了Java强大的面向对象能力。抽象类abstract class和接口interface在对于抽象定义方面具有非常大的类似性。甚至能够相互替换。因此非常多开发人员在进行抽象定义时对二者的选择显得比較任意。事实上,两者之间还是有非常大的差别。对于它们的选择能反映出对问题本质的理解、对设计意图的理解。
了解抽象类看这里:java中抽象概念怎样体现的
了解接口看这里:java中接口究竟是什么
了解很多其它继承看这里:java类的继承有什么意义
详细例如以下:
了解is-a,has-a,like-a关系看这里:is-a,has-a,like-a是什么
2、interface应用在什么场合
- 类与类之间须要特定的接口进行协调,而不在乎其怎样实现。
- 作为能够实现特定功能的标识存在,也能够是什么接口方法都没有的纯粹标识。如序列化接口:Serializable
- 须要将一组类视为单一的类,而调用者仅仅通过接口来与这组类发生联系。
- 须要实现特定的多项功能,而这些功能之间可能全然没有不论什么联系。
3、abstract class应用在什么场合
- 定义了一组接口,但又不想强迫每一个实现类都必须实现全部的接口。
能够用abstract class定义一组方法体,甚至能够是空方法体,然后由子类选择自己所感兴趣的方法来覆盖。
- 某些场合下。仅仅靠纯粹的接口不能满足类与类之间的协调,还必需类中表示状态的属性来差别不同的关系。
- 规范了一组相互协调的方法。当中一些方法是共同的。与状态无关的,能够共享的,无需子类分别实现;而还有一些方法却须要各个子类依据自己特定的状态来实现特定的功能。
Java千百问_05面向对象(005)_接口和抽象类有什么差别的更多相关文章
- Java千百问_05面向对象(011)_引用传递和值传递有什么差别
点击进入_很多其它_Java千百问 1.什么是值传递 值传递,是将内存空间中某个存储单元中存放的值,传送给还有一个存储单元.(java中的存储单元并不是物理内存的地址,但具有相关性) 比如: //定义 ...
- Java千百问_05面向对象(006)_is-a,has-a,like-a是什么
点击进入_很多其它_Java千百问 1.is-a,has-a,like-a是什么 在面向对象设计的领域里,有若干种设计思路,主要有例如以下三种: is-a.has-a.like-a java中在类.接 ...
- Java千百问_03基本的语法(005)_二进制是如何做位运算的
点击进入_很多其它_Java千百问 二进制是如何做位运算的 程序中的全部数在计算机内存中都是以二进制的形式储存的.位运算说白了,就是直接对整数在内存中的二进制位进行操作. 其它运算符看这里:java种 ...
- Java千百问_03基本的语法(001)_局部变量、类变量、实例变量有什么差别
点击进入_很多其它_Java千百问 局部变量.类变量.实例变量有什么差别 在聊局部变量.类变量.实例变量有什么差别之前,我们须要了解一下Java变量. 1.Java变量是什么 在数学世界中,我们知道有 ...
- “全栈2019”Java第一百零九章:匿名内部类实现唯一抽象类或接口
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Java学习笔记10(面向对象三:接口)
接口: 暂时可以理解为是一种特殊的抽象类 接口是功能的集合,可以看作是一种数据类型,是比抽象类更抽象的"类" 接口只描述所应该具备的方法,并没有具体实现,具体实现由接口的实现类(相 ...
- Java学习笔记8(面向对象3:接口)
接口的概念: 接口是功能的集合,同样可以看最做事一种数据类型,是比抽象类更为抽象的"类”. 接口之描述所应该具备的方法,并没有具体实现,具体的实现有接口的实现类(相当于接口的子类)来完成.这 ...
- python开发面向对象基础:接口类&抽象类&多态&钻石继承
一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实 ...
- java_基础_接口和抽象类
1.接口 java中接口的存在意义是:让多个继承该接口的类实现多态,让多个类有相同的特征 示例代码: interface MyInterface{ void myMethod(); } class T ...
随机推荐
- Orchard 之:Widget,兼看 Layer 在权限控制中的作用
一:Widget 可以理解为控件,可以直接被页面所引用.行为类似与分部页面,比如,我们可以创建一个 商品列表 Widget,然后这个 Widget 就可以被很多页面所引用. 理解 Widget 这个概 ...
- PHPUnit安装
From : http://blog.csdn.net/ruby97/article/details/8868197
- C++二维数组 取地址 复制给 二维指针
本来应该是个简单的问题,但是我就不明白了,为什么会段错误了... #include<stdio.h> #define UINT32 unsigned int UINT32 NType1_X ...
- RV32I指令集
RV32I是最基本的32位Base指令集,它支持32位寻址空间,支持字节地址访问,仅支持小端格式(little-endian,高地址高位,低地址地位),寄存器也是32位整数寄存器.RV32I指令集的目 ...
- FreePascal - Typhon在Windows10 X64下的使用问题!
Typhon是CodeTyphon中的开发FreePascal的IDE工具. 在Windows10 X64中安装完CodeTyphon后,我们会发现有两套Typhon,分别对应32位和64位,32位可 ...
- ul里不能直接嵌套div(在ie7以前版本)
平时为了写某个js效果,从而忽略了标签的嵌套 从而导致了IE6-7混乱,在ul下,直接嵌套div,在ie7以前版本,会出现的状况是:div会被离它最近的li包裹住. 请看dome <ul cla ...
- 屌丝就爱尝鲜头——java8总结晒一晒
前两节讨论了那么多,这节就是两个议题,讨论了新增的日期的api,再说一说我的Java8的一些心得体会了. 首先,我们必须要搞清楚Java 8 为什么要增加新的日期的api,这是由于老的日期api非常的 ...
- Java-JUC(七):同步锁的几种方式
为什么要使用同步锁? 因为当使用多线程同时访问一个变量或对象时,如果这些线程中即有读又有写操作时,会造成导致变量或对象的状态出现混乱.例如:一个银行账户被A/B两个线程同时操作,A线程.B线程同时开始 ...
- Java-JUC(六):创建线程的4种方式
Java创建线程的4种方式: Java使用Thread类代表线程,所有线程对象都必须是Thread类或者其子类的实例.Java可以用以下4种方式来创建线程: 1)继承Thread类创建线程: 2)实现 ...
- Managed C++ dll: #define _AFXDLL or do not use /MD[ d]?
[问题] Hello all I'm writing a managed C++ dll with will be acting as an intermediate between a lo ...