Java中抽象类和接口的区别

java中抽象类和接口的区别 https://blog.youkuaiyun.com/ooppookid/article/details/51173179 1、接口和抽象类有什么区别 在Java语言中,抽象类abstract class和接口interface是抽象定义的两种机制。 正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。抽象类abstract class和接口interface在对于抽象定义方面具有很大的相似性,甚... 阅读详情

Java中抽象类和接口的区别

       在Java实际开发中,抽象类和接口是开发设计中两个非常重要的设计环节,可是经常有人会将两者搞混,在碰到抽象类和接口都能用的情况下不知道该如何选择,为了帮助大家更好的理解这两者之间的概念,下面将会用总结的形式来将抽象类和接口进行对比。

关键字

		一、抽象类的关键字
			抽象类需要使用关键字abstract class进行定义,并且在一个抽象类中也可以利用abstract关键
			字定义若干个抽象方法,这样抽象类的子类就必须在继承抽象类时强制覆写全部抽象方法。

定义抽象类:

abstract class Demo{						//定义抽象类
	private String type;					//定义成员变量
	private abstract String getInfo();		//抽象方法
	public void setType(String type){		//普通方法
		this.type = type;
	}
}


			二、接口的关键字
				在Java中接口属于一种特殊的类,需要使用关键字interface来进行定义,在接口中可以定义
				全局常量、抽象方法(修饰符必须为public)、default方法以及静态方法。

定义标准接口

interface Demo{												//定义接口
	public static final String INFO = "Hello World!";		//定义全局常量
	public abstract String getter();						//定义抽象方法
}

关系

	一、抽象类的关系:
		一个抽象类可以实现多个接口,一个子类只能继承一个抽象类,即单继承。

范例:子类继承抽象类同时实现多个接口

interface IMessage{
	public static final String INFO = "SCITC";
	public abstract String getInfo();
}

interface IChannel{
	public abstract boolean connect();
}

abstract class DatabaseAbstract implements IMessage,IChannel{
	public abstract boolean getDatabaseConnection();
}

class Database extends DatabaseAbstract {
	@Override
	public String getInfo() {
		if(this.connect()) {
			if(this.getDatabaseConnection()) {
				return "【Database Message】四川信息职业技术学院:www.scitc.cn";
			}else {
				return "Database连接失败";
			}
		}
		return "【DefaultMessage】" + IMessage.INFO;
	}
	
	@Override
	public boolean connect() {
		return true;
	}
	
	@Override
	public boolean getDatabaseConnection() {
		return true;
	}
}

public class Demo {

	public static void main(String[] args) {
		IMessage msg = new Database();
		System.out.println(msg.getInfo());
	}

}

程序运行结果:
【Database Message】四川信息职业技术学院:www.scitc.cn



	二、接口的关系:
	接口不能继承抽象类,却能继承多个接口。

范例:使用extends继承多个接口

interface Message{
	public static final String INFO = "www.scitc.cn";
	public abstract String getInfo();
}

interface Channel{
	public boolean connect();
}

interface Service extends Message,Channel{
	public String service();
}

class Database implements Service{
	
	@Override
	public String getInfo() {
		return Message.INFO;
	}
	
	@Override
	public boolean connect() {
		return true;
	}
	
	@Override
	public String service() {
		return "DatabaseMessage:www.scitc.cn";
	}
	
}




局限性

抽象类:一个子类只能够继承一个抽象类;
接口:一个子类可以实现多个接口。

结论

通过上面的观察可以得出结论:实际开发中,抽象类和接口是都能用得到的,具体使用哪一个也要视具体情况而定
并没有明确的限制。然而,抽象类有一个最大的缺点——一个子类只能继承一个抽象类,存在单继承的局限性,所以
当遇到抽象类和接口都能使用的情况时应该优先考虑接口以避免单继承的局限性。
微信小程序消息推送全攻略:从模板消息到订阅消息的实战避坑指南 本文深入解析微信小程序消息推送机制,对比模板消息、订阅消息与客服消息的核心差异与适用场景。重点提供订阅消息从用户授权设计、前端代码实现到后端稳定发送的完整实战指南,并分享提升消息点击率的文案与运营技巧,帮助开发者构建高效、用户友好的消息推送体系。 阅读详情

相关推荐

DEMATEL-ISM模型的Python实现——方法介绍以及代码复现

本文参考文献与网络资料,对DEMATEL-ISM方法做了介绍何步骤描述,并给出Python代码进行了计算和绘图。

cros1的博客 2万+

Java抽象类和接口的详细区别(全)

这两者经常在笔试以及面试中经常问及,甚至在项目实战中还在纠结用哪一种类型今天就此问题详细剖析一下以往我的文章中也有稍微提及:java框架零基础从入门到精通的学习路线(超全)此处将其这些文章抽离公共部分,详细总结下这两概念此处的总结偏向于两者概念的总结,将其制作成表格抽象类是半抽象的,有构造方法,只允许出现常量和抽象方法。类和类之间只能单继承,一个抽象类只能继承一个类(单继承)。接口是完全抽象的,没有构造方法,接口和接口之间支持多继承,一个类可以同时实现多个接口比较内容抽象类。

码农研究僧的博客 2万+

第四次工业革命如何重构产业逻辑:写给技术人的趋势推演

第四次工业革命正在以人工智能、大数据和新能源为核心重构全球产业逻辑。本文从历史规律切入,指出技术革命本质是生产力跃迁和产业链话语权的转移。当前AI基础设施竞赛已形成算力、数据、算法三大支柱,其中算力投资首超石油领域,绿色算力与新型架构成为关键。数据治理带来隐私计算等新技术约束,数据中心正向液冷技术和"东数西算"模式演进。技术人需构建三大竞争力:夯实分布式系统等底层能力、培养跨领域知识融合能力、善用约束条件驱动创新。这场变革将奖励那些深度理解技术本质并能快速适应的实践者。

几十年资深高级架构师,技术专家的技术笔记。专注C、Java、Python、微服务、云原生、AI工程化及高并发系统分布式架构实战,分享源码剖析、性能调优与架构治理经验。 294

java接口、接口方法、接口属性 的修饰符详解

java接口的修饰符:abstract(默认不写。interface本身就是抽象的,加不加abstract都一样) 接口中字段的修饰符:public static final(默认不写)   解释如下: public: 使接口的实现类可以使用该常量; static:接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态变量。        ...

Cheung's house 2万+

FPGA数字下变频实战:用Vivado DDS IP核实现IQ采样与频率校正(附MATLAB仿真对比)

本文提供了一份基于Vivado DDS IP核实现FPGA数字下变频(DDC)的完整工程指南。详细阐述了IQ采样的原理、DDC链路构建、DDS频率校正的工程实现,并重点介绍了如何利用MATLAB搭建黄金参考模型进行全链路仿真与对比验证,分享了关键的调试技巧与性能优化建议。

t1u2v的博客 811

verilog常用模块1——按键消抖模块详解

按键消抖模块key_filter 1. 原理介绍 如图,按键未按下时keys信号为高电平,按下则为低电平;通过检测keys信号电平,就可以判断按键状态。 但反作用弹簧会导致抖动现象,电平信号出现一段不确定波形 一般情况下,抖动的电平信号为1的持续时间不会超过20ms,只要通过对抖动波形的发生时长计时(计数),当为1的时长超过20ms,则可判定 进入了发生了按键按下/释放动作,并确定按键状态...

coin的博客 1万+

Java中抽象类和接口的区别,一文弄懂,图文并茂

Java是一种面向对象的编程语言,Java中的抽象类和接口是两种常见的抽象概念,它们都能够帮助我们实现抽象化和多态性,但是它们在一些细节上有所不同。本文将详细介绍Java中抽象类和接口的定义、区别和使用,并提供相应的代码示例。抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类具有类的所有特性,包括成员变量、成员方法、构造方法等,但是其中的某些方法是抽象的,需要在具体的子类中实现。抽象方法没有方法体,只有方法签名,用abstract关键字修饰。

向诸位大佬虚心学习 7151

音频分割:长语音音频 分割为 短语音音频 - python 实现

音频分割:长语音音频 分割为 短语音音频 - python 实现

DATABALL 的博客 1207

java-抽象类和接口的区别

抽象类和接口的区别是什么一、区别1、抽象类要被子类继承,接口要被类实现。2、接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。3、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。4、接口是设计的结果,抽象类是重构的结果。5、抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高。6、抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量。7、抽象类主要用来抽象类别,接口主要用来抽象功能。 一、区别 1、抽象类要被子类继承,接口要被类实现。 2、接口只能做方法声明,抽

weixin_43846708的博客 4755

视觉媒体通信作业记录(六)端到端的视频传输系统

将采集、编码、传输、显示各模块连接起来,形成一个端到端的视频通信系统,开发一个特色模块,将其加入系统;

weixin_45774698的博客 1967

使用VNA(Vector Network Analyzer)对S参数进行去嵌(一)

传统上,RF和微波组件被设计成具有同轴接口的封装。通过连接一系列这些单独的同轴设备,可以容易地制造复杂的系统。使用使用类似同轴接口的标准测试设备可以很容易地测量这些部件和系统的性能。然而,现代系统需要更高水平的组件集成、更低的功耗和更低的制造成本。射频组件正在迅速从使用昂贵同轴接口的设计转向使用印刷电路板和表面贴装技术(SMT)的设计。传统的同轴接口甚至可以从最终产品中取消。这就给设计者留下了用需要同轴接口的测试设备测量这些射频和微波组件性能的问题。解决方案是使用连接同轴和非同轴传输线的测试夹具。

小孟同学的博客 1万+

java提高篇(四)-----抽象类与接口

接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别。 一、抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的。如果...

chenssy 的技术博客 2001

【Matlab光伏功率预测】基于GRU门控循环单元的光伏功率时间序列预测(附MATLAB代码)

【Matlab光伏功率预测】基于GRU门控循环单元的光伏功率时间序列预测(附MATLAB代码)

k8291121的博客 1100

java中接口和抽象类的区别

金三银四马上就到了,希望大家能好好学习一下这些技术点学习视频:《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!面试真题:[外链图片转存中…(img-y4cDQOKR-1711982952870)]《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

WJud11的博客 672

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java的接口和抽象类区别

一、抽象类 在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为: abstract void fun(); 抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。 下面要注意一个问题:在《J...

孤独没有颜色 169

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java中接口和抽象类的区别

java中接口和抽象类的区别 ...

suliangkuanjiayou的博客 4400

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java中抽象类跟接口的区别

Java中抽象类和接口的区别 抽象类: 含有abstract修饰符的class 即为抽象类, abstract类不能创建实例对象, 含有abstract的方法的类必须定义为abstract class , abstract class 里的方法不必是抽象的, 抽象来中定义抽象方法必须放在具体子类中实现,所以,不能有抽象的构造方法或抽象的静态方法,如果子类没有实现抽象父类中的所有方法,那

Super的专栏 1210

Java抽象类和接口的区别

抽象类接口核心目的:构建类层次结构核心目的:定义行为标准关键优势:代码复用 + 状态封装关键优势:灵活性 + 解耦典型场景Animal→DogCat典型场景RunnableCloneable💡经验法则优先用接口(更灵活、解耦、易扩展)当需要共享代码或状态时,改用抽象类Java 8 后两者功能趋近,但设计思想不变。

走过冬季 673

Java总结:抽象类、接口以及抽象类和接口的区别

Java中抽象类和接口的区别会是很多公司的必问面试题之一,我们必须牢牢掌握。

鄙人kunzhi96,感恩遇见! 864

JAVA中接口和抽象类的区别

JAVA中接口和抽象类的区别     学过C++的朋友应该知道,在C++中并没有显式地区分出接口这个概念,但是在C++中可以定义类似于JAVA中的接口的抽象类实现接口的功能。JAVA中将接口抽离出来,作为一个单独的形式存在,使得在JAVA中使用接口变得更加清晰明朗,在JAVA中对接口的使用也是青睐有加。     本篇文章不涉及JDK7以后的新特性,对于新的JDK特性可能对于接口

君临天下的博客 1971
上一篇: Java String类两种实例化方式
String456
博客等级 码龄7年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值