当前位置: 首页 > news >正文

接口与抽象类的区别

a、抽象类不能被实例化只能被继承;b、包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法;c、抽象类中的抽象方法的修饰符只能为public或者protected,默认为public;d、一个子类继承一个抽象类,则子类必须实现父类抽象方法,否则子类也必须定义为抽象类;e、抽象类可以包含属性、方法、构造方法,但是构造方法不能用于实例化,主要用途是被子类调用。接口:Java中接口使用interface关键字修饰,特点为:a、接口可以包含变量、方法;变量被隐士指定为public static final,方法被隐士指定为public abstract(JDK1.8之前);b、接口支持多继承,即一个接口可以extends多个接口,间接的解决了Java中类的单继承问题;c、一个类可以实现多个接口;d、JDK1.8中对接口增加了新的特性:
(1)、默认方法(default method):JDK 1.8允许给接口添加非抽象的方法实现,但必须使用default关键字修饰;定义了default的方法可以不被实现子类所实现,但只能被实现子类的对象调用;如果子类实现了多个接口,并且这些接口包含一样的默认方法,则子类必须重写默认方法;
(2)、静态方法(static method):JDK 1.8中允许使用static关键字修饰一个方法,并提供实现,称为接口静态方法。接口静态方法只能通过接口调用(接口名.静态方法名)。

相同点

(1)都不能被实例化 (2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。

不同点

(1)接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。

(2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。

(3)接口强调特定功能的实现,而抽象类强调所属关系。

(4)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。

http://www.lryc.cn/news/188917.html

相关文章:

  • 短视频账号矩阵系统源码saas===独立部署
  • 香港专用服务器拥有良好的国际网络连接
  • IP/SIP网络有源吸顶喇叭 20W扬声器 可供POE供电
  • 基于Keil a51汇编 —— 程序模板文件以及规则
  • 案例研究 | 玉湖冷链基于JumpServer实现管理安全一体化
  • JavaEE初阶学习:HTTP协议和Tomcat
  • ASEMI整流桥GBU810参数,GBU810封装
  • docker应用记录总结
  • Jenkins 添加节点Node报错JNI error has occurred UnsupportedClassVersionError
  • swift ui 布局 ——Stack(HStack、VStack、ZStack)
  • 淘宝天猫商品评论数据接口,淘宝天猫商品评论API接口,淘宝API
  • C# Onnx GFPGAN GPEN-BFR 人像修复
  • ubuntu安装依赖包时显示需要先安装其所需要的各种安装包)apt-get源有问题
  • C/C++之自定义类型(结构体,位段,联合体,枚举)详解
  • HBase 表如何按照某表字段排序后顺序存储的方法?
  • webrtc用clang编译支持h264,支持msvc调用库
  • 迁移学习是什么?
  • 哈希的应用--位图和布隆过滤器
  • mac M2芯片在使用Android studio 编译问题bad cpu type in executable android
  • M4Singer ubuntu 22.04 4060ti16g ModuleNotFoundError: No module named ‘gradio‘
  • postman 密码rsa加密登录-2加密密码
  • 如何去图片水印?这些方法解决你的问题
  • Qt通过正则表达式筛选出字符串中的手机号
  • 【Pytorch】深度学习之数据读取
  • Maven教程
  • 一篇带你看懂异步:promise、async await
  • RocketMQ快速实战以及集群架构详解
  • 京东运营数据分析:2023年8月京东饮料行业品牌销售排行榜
  • ES6之函数的扩展二
  • Ubuntu-Ports更新源 ARM64更新源