Java编程--抽象类和接口的区别
| 
 No.  | 
 区别  | 
 抽象类  | 
 接口  | 
| 
 1  | 
 关键字  | 
 abstract class  | 
 interface  | 
| 
 2  | 
 组成  | 
 构造方法、普通方法、抽象方法、static方法、常量、变量  | 
 抽象方法、全局常量  | 
| 
 3  | 
 子类使用  | 
 class 子类 extends 抽象类  | 
 class 子类 implements 接口,接口…  | 
| 
 4  | 
 关系  | 
 抽象类可以实现多个接口  | 
 接口不能继承抽象类,却可以继承多个父接口  | 
| 
 5  | 
 权限  | 
 可以使用各种权限  | 
 只能使用public权限  | 
| 
 6  | 
 限制  | 
 一个子类只能继承一个抽象类(单继承局限)  | 
 没有单继承局限  | 
| 
 7  | 
 子类  | 
 抽象类和接口必须有子类,子类必须实现所有抽象方法  | 
|
| 
 8  | 
 实例化  | 
 依靠子类的向上转型进行对象的实例化  | 
|
经过比较可以发现,抽象类中支持的功能绝对要比接口更多,但是抽象类不能多继承,这就掩盖里抽象类的所有优点,即:当抽象类和接口都可以使用的时候,优先使用接口。
不成文的参考:
·在进行某些公共操作的时候一定要定义接口;
·有了接口就需要子类完善方法;
·如果是自己写的接口,那么绝对不要使用关键字new实例化接口,利用工厂设计模式。
Java编程--抽象类和接口的区别的更多相关文章
- 转:二十一、详细解析Java中抽象类和接口的区别
		
转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...
 - Java中抽象类和接口的区别?
		
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...
 - java中抽象类、接口及区别
		
转自:http://www.cnblogs.com/dolphin0520/p/3811437.html 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没 ...
 - 关于JAVA中抽象类和接口的区别辨析
		
今天主要整理一下新学习的有关于Java中抽象类和接口的相关知识和个人理解. 1 抽象类 用来描述事物的一般状态和行为,然后在其子类中去实现这些状态和行为.也就是说,抽象类中的方法,需要在子类中进行重写 ...
 - 转载:详细解析Java中抽象类和接口的区别
		
在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...
 - Java中抽象类和接口的区别
		
转载自:http://dev.yesky.com/436/7581936.shtml 在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种 ...
 - 详细解析Java中抽象类和接口的区别
		
在Java语言中, abstract class 和interface 是支持抽象类定 义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和in ...
 - 详细解析Java中抽象类和接口的区别(转)
		
转自:http://dev.yesky.com/436/7581936.shtml 在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机 ...
 - [转]详细解析Java中抽象类和接口的区别
		
在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...
 - java中抽象类跟接口的区别
		
额,好吧,本来是打算转载些神马的,但是搜资料的过程中发现了一个专注与java的人,那就关注啦,以后多进他blog学习学习:http://www.cnblogs.com/chenssy/p/337670 ...
 
随机推荐
- 闲话 4.12——对 Worpitzky 恒等式的几个证明
			
\[\sum_{i}\left\langle\begin{matrix}n\\i\end{matrix}\right\rangle \binom{i+k}{n}=k^n \] 通俗的证明(具体数学的习 ...
 - Hetao P1178 冒险者 题解 [ 绿 ][ 最短路 ][ 线性 dp ]
			
冒险者 题解 本蒟蒻采用的和大部分人解法不同,是根据当前标记值的总和跑最短路的一种解法. 思路 30min ,调代码 2h 的我太蒻了 首先观察题面可以发现本题求的是最少操作数,由于要求最小且有变化的 ...
 - 【COM3D2Mod 制作教程(3)】Mod 制作概要
			
[COM3D2Mod 制作教程(3)]Mod 制作概要 制作工具整合包:https://mod.3dmgame.com/mod/205516 该工具包简单整合了些本章需要的小型工具.插件.以及其他一些 ...
 - C++最基本调用静态库的方法小结
			
同样是最基本的调用方法小例,希望能带来参考,感谢! 创建静态库 编辑头文件 myLib.h: #pragma once #include "stdafx.h" int add(in ...
 - 分布式锁—5.Redisson的读写锁
			
大纲 1.Redisson读写锁RedissonReadWriteLock概述 2.读锁RedissonReadLock的获取读锁逻辑 3.写锁RedissonWriteLock的获取写锁逻辑 4.读 ...
 - rust学习笔记(6)
			
模块 定义自己的模块,方便外部的调用 mod可以嵌套 可见程度 分为private和public 其中pub可以分为模块内可见和模块外可见 mod也遵循可见性的要求 // 一个名为 `my_mod` ...
 - Grafana导入 json 文件的 dashboard 错误 Templating Failed to upgrade legacy queries Datasource xxx not found
			
前言 编辑或者修改后的 dashboard 保存为 json 文件,在其他环境导入使用,报错 Failed to upgrade legacy queries Datasource xxxxxxx w ...
 - Ubuntu20.04搭建k8s v1.23.3版本集群
			
前言 服务器统一版本 Ubuntu 20.04 搭建集群最少要两台服务器 每台服务器都需要 docker.环境配置.安装 kubeadm.kubelet 和 kubectl docker 安装 doc ...
 - vscode运行js文件
			
一. 首先你需要下载安装 nodejs 下载地址 二. 在 VS Code中有一个插件 code runner,安装后可以直接运行在 node 环境中,然后就可以在 vscode 中输出文件的结果. ...
 - Oralcle11.2.0.1.0使用出现的问题
			
问题1:oracle中监听程序当前无法识别连接描述符中请求服务 解决方法1: 查看oracle的服务是否开启,计算机->管理->服务和应用程序->服务,如下图 解决方法2: 找到or ...