Java中抽象类与接口的区分方法及final关键字

Java8中如何判断一个类是不是abstract的? 阅读详情

一. 概述

接口interface和抽象类abstract Class是支持抽象类定义的两种机制。接口和抽象类都是不能够被实例化的,同时继承了抽象类的子类和实现了接口的实现类只有实现了接口和抽象类中的抽象方法才可以被实例化。

抽象类:

           1. 可以有私有方法和私有变量的,且成员变量都是default,可以在子类中重新定义,也可以被重新赋值。

           2. 通过关键字abstract来声明一个类为抽象类,同时抽象类中的抽象方法没有方法体。

           3. 子类实现方法必须含有相同的或者更低的访问权限(public > protected > private)。

           4. 抽象类的子类必须实现父类中的所有抽象方法,否则子类也为抽象类。

           5. 抽象类中可同时有关键字abtract修饰的抽象方法(只能定义不能实现,抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号)和普通方法(既能定义又能实现)。

           6. 抽象类必须用public、procted 修饰(如果为private修饰,那么子类则无法继承,也就无法实现其抽象方法)。默认缺省为 public。

接口:

          1. 可以看作为一种特殊的抽象类,接口是公开的,不能有私有的方法和变量,且变量默认隐式为public static final,且必须赋初值,且不能被重新赋值,即不能被修改。

          2. 通过关键字interface来声明一个类为接口,接口中的所有方法都是抽象方法且没有方法体,抽象方法默认隐式都是public abstract 关键字修饰(并且只能是 public ,如果是 private,procted,那么就编译报错),且不能是 static,接口中的方法也不允许子类覆写,抽象类中允许有static 的方法。

          3. Java是单继承多实现的语言,即一个类可以实现多个接口,所以可以通过接口来间接实现多重继承。

          4. 接口中的只由被定义,而不能实现的抽象方法,Java1.8可以定义default方法体。

          5. 接口中没有 this 指针,没有构造函数,不能拥有实例字段(实例变量)或实例方法。

二. 代码示例

 抽象类:

public abstract class Test{

    //普通成员变量
    private int age;

    //抽象方法
    abstract void method();

    //普通成员方法
    public string method() {
    C
    System.out.println("This is abstract class!");
    }
} 

  Jdk8前的接口:

interface Test {
    
    public static final int age = 18;

    //方法隐式的是public abstract修饰
    String getString(参数列表);
}

Jdk8后的接口允许我们在接口中定义static方法和default方法且可以使用default关键字实现默认的方法:

//jdk8及以后,允许我们在接口中定义static方法和default方法。
public  interface JDK8Interface {

    //static 修饰定义静态方法
    static void staticMethod(){

    System.out.println("接口中的静态方法。");
    }

    //default修饰符定义默认方法
    default void defaultMethod() {

    System.out.println("接口中的默认方法。");
    }
}

总结:

  1. 抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
  2. 抽象类要被子类继承,接口要被类实现。
  3. 接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
  4. 抽象类里可以没有抽象方法。
  5. 接口可以被类多实现(被其他接口多继承),抽象类只能被单继承。
  6. 接口中没有 this 指针,没有构造函数,不能拥有实例字段(实例变量)或实例方法。
  7. 抽象类不能在Java 8 的 lambda 表达式中使用。

三. final关键字

final关键字可以修饰类,成员变量和方法中的局部变量。

1. final类

    final类是不能被继承的,即不能够有子类。

2. final方法

    如果用final修饰父类中的一个方法,那么这个方法就不允许子类进行重写,也就是说,不允许子类隐藏可以继承的final方法(只能继承,不能重写)。

3. 常量

    如果成员变量或者局部变量被修饰为final,那么它就是常量。由于常量在运行期间不允许修改,所以常量在声明时是没有默认值的,这就是要求我们在声明变量时必须指定该变量的值。

UE5导入MetaHuman虚拟头像后,连接live link face,面部表情捕捉出错修正 UE5 利用live link face 驱动meta human面部表情捕捉 阅读详情

相关推荐

Hyper-V集群部署指南

工欲善其事,必先利其器。搭建一个方便管理的服务集群,是分布式学习很重要的环境。 目前流行的虚拟机产品主要为Vmware 和 win10自带的Hyper-V(win10家庭版无此功能),网上关于Vmware的教程更多,显然它更容易上手,但Hyper-V也算是一个很不错的产品,这里记录一下我的学习过程: 目录 Hyper-V的安装 服务集群的搭建 虚拟机的网络通信 NAT网络的搭建 端口映射 Linux的静态IP 虚拟机的自启动问题 Hyper-V的安装 也不能算说是安装,如果你的win1

Swing 6923

java 接口、final关键字、枚举

java 接口 final关键字 枚举

qq_63196986的博客 1226

第十九届全国大学生智能车竞赛越野信标 硬件篇

全国大学生智能汽车竞赛,越野信标组

2301_77568650的博客 4118

final关键字、抽象类、接口

final关键字、抽象类、接口

weixin_69474097的博客 1308

用FPGA驱动WS2812B点阵,手把手教你实现动态文字显示(附完整Verilog代码)

本文详细介绍了如何使用FPGA驱动WS2812B点阵实现动态文字显示,包括硬件连接、Verilog代码实现和动态效果设计。通过精确的时序控制和数据处理,读者可以掌握FPGA与WS2812B的交互技术,并实现炫酷的显示效果。附完整Verilog代码,适合硬件爱好者和工程师参考实践。

weixin_30482383的博客 669

从CAD到Web:高效转换STEP/IGES模型为GLB格式的实践指南

本文详细介绍了如何将工业设计中的STEP/IGES模型高效转换为Web友好的GLB格式。通过PythonOCC和gltf-pipeline等工具链,实现从CAD到Web的无缝转换,大幅提升模型加载速度和展示效果。文章包含实战案例、优化技巧和常见问题解决方案,帮助开发者快速掌握3D模型转换技术。

weixin_29072299的博客 509

Java修饰符——final

Java修饰符

longool的博客 467

用电脑通过网口控制keysight示波器

Keysight HD304MSO示波器提供1GHz带宽、14位高精度ADC及10.1英寸触控屏,支持50μV低噪声信号捕获和1.3M波形/秒刷新率。配备4通道探头、逻辑分析仪接口及100Mpts存储深度,含故障诊断、FFT等高级功能。通过网线连接电脑安装TightVNC软件(示波器IP为169.254.163.24)可实现远程控制,相比U盘传输更高效。(149字)

johnboat的专栏 1136

Java中的修饰符final和接口

Java修饰符

bhmtls的博客 1629

11. 使用 HTTP PUT, PATCH 以及 MERGE 请求消费 SAP ABAP OData 服务修改操作的实现及其区别

使用 SAP ABAP SEGW 事物码实现 OData 服务的修改操作时,对于消费端通过 PATCH/MERGE 和 PUT 这三种不同类型的 HTTP 请求触发的场景,我们应该在 UPDATE_ENTITY 方法里用 IF 分支分别进行处理,原因就在于 GET_ENTITY 方法是否在修改处理逻辑的过程中被触发。......

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2466

Apache Kafka Connect任意文件读取漏洞(CVE-2025-27817)

由于Apache Kafka客户端未对用户输入进行严格验证和限制,未经身份验证的攻击者可通过构造恶意配置读取环境变量或磁盘任意内容,或向非预期位置发送请求,提升REST API的文件系统/环境/URL访问权限。(CVE-2025-27817)

iSee857的博客 2026

final关键字总结

final关键字: 1.final修饰变量,则等同于常量; 2.final修饰方法中的参数,称为最终参数; 3.final修饰类,则类不能被继承; 4.final修饰方法,则方法不能被重写; 注意: A.接口和抽象类不能是final的,它们需要被实现和继承; B.重载和重写要区分开,父子之间是重写,同一个类里面是重载,final修饰的子类没发重写,而不是重载。

编程之美 301

【异常】OpenClaw对接钉钉/飞书配对成功但无响应 全流程排查指南(适配阿里轻量服务器+OpenClaw)

下面按「先快速定位根因→通用核心排查→平台专属排查→兜底方案」的顺序,一步步解决,新手也能跟着操作。

奶爸的编程之路,也就一周冷个三天 702

JAVA总结抽象类与接口

一、抽象类a)抽象类的子类必须重写父类的所有的抽象方法i.如果要不重写,除非子类自己也是抽象类;b)抽象类是否允许有构造方法?i.允许!解释:抽线类的构造函数还有一种巧妙应用:就是在其内部实现子类必须执行的代码。二、Myeclipse使用细节a)在MyEclipse当中在左边会显示三角形;i.如果是实心的三角形表示此方法是重写的父类的常规方法;ii.如果是空心的...

weixin_33856370的博客 73

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

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

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

java基础2:this、static、final、abstract关键字、代码块、生成API工具包、继承、多态、方法重载和重写,抽象类、接口、常见异常、java权限修饰符、选择排序思想和程序和内部类

三、第三周 1.this关键字 this表示当前类对象的地址空间值的引用。就是说,this代表了new出来的对象 其最大作用就是解决了构造器中局部变量隐藏成员变量。即用this.变量名 = 变量名 区分。 2.static关键字 共享共用,用static修饰的变量或方法不隶属与任何一个对象私有,他只属于类,实际应用中 将公共属性用static修饰,用类名.变量名(方法名)调用 3.继承 概念:将多个类的共性内容抽取到一个独立的类中,然后这多个类和独立的这个类产生一种关系: 继承关系! 关键字:extends

lpg432的博客 188

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

JavaSE进阶 | final关键字、抽象类和接口

final关键字详解、抽象类、接口以及类和类之间的关系、抽象类和接口之间的区别

m0_61933976的博客 2447

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java笔记(抽象类、接口、内部类、final关键字)

Java笔记(抽象类、接口、内部类、final关键字)

LLM | Agent | RAG | Java 3497

final关键字,认识抽象类,认识接口,认识内部类的四种形式

final关键字,认识抽象类,认识接口,认识内部类的四种形式

m0_72541008的博客 2139

java——final关键字;abstract抽象类;implement接口

final使用注意事项和细节讨论;抽象类使用注意事项和细节讨论,抽象类最佳实践-模板设计模式;接口使用注意事项和细节讨论;实现接口VS继承类;接口的多态特性

Good_Starry的博客 903

[Java] 抽象类、final类和接口

抽象类、抽象方法、final类与final方法、为何需要final类、为何需要final方法、Java中的接口、定义接口、 实现接口

一以贯之的努力 不得懈怠的人生 2135

【面向对象-08】final关键字、抽象类、接口

目录 1. final关键字 1). final修饰范围 2). final修饰成员变量 1.抽象类(abstract class) 1). 抽象方法和抽象类产生的背景 2). 抽象类的特点 3). 特殊的抽象类 (没有抽象方法) 4). 多个类的功能向上抽取之后,如何确定方法是否该是抽象的 3.接口(interface) 1). 接口中成员格式的特点 2). 接口和实现类中的方法 3). 多个接口和一个类的关系 4). 接口的语义 5). 设计时:抽象类和接口中功能定义 6)

百里慕溪 4019

java中的抽象类,final关键字,接口

文章目录1.抽象类及抽象方法1.抽象方法2.抽象类3.总结2.final关键字3.接口1.生活中的接口2.接口的概念3.面向接口编程4.接口的定义与使用5.接口的特性 1.抽象类及抽象方法 1.抽象方法 抽象方法是一种特殊的方法:它只有声明,而没有具体的实现. 抽象方法必须用abstract关键字进行修饰 2.抽象类 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象 类。 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方 法和构造方法。 用abstract修饰的

qq_56501283的博客 452

Java中抽象类与接口

抽象类和接口是java中非常重要的知识点当我们在做子类共性功能抽取时,有些方法在父类中并没有具体的体现,这个时候就需要抽象类了!​ 在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类!接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用。Java中接口存在的两个意义用来定义规范用来做功能的拓展抽象类和接口普遍存在于java中,许多东西都离不开他俩。

Yore7的博客 1585

Java abstract关键字、抽象方法、抽象类与接口

Java 抽象方法、抽象类与接口

Johnson's Blog 1369

Java中final关键字,抽象类与接口

转载:http://yhalg1314.iteye.com/blog/742887 抽象类与接口是Java中最重要部分之一,这里用较大的篇幅来做下这部分的笔记. 1. final关键字       在Java中, 可以使用final关键字修饰类、方法以及成员变量。       (1).final标记的类不能被继承;       (2).final标记的方法不能被子

zhfinna_app的博客 390

Java抽象类与接口详解(外加final关键字)

final关键字 final 用于声明属性,方法和类 属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改。 方法:子类里不可被覆盖。 类:不能被定义为抽象类或是接口,不可被继承。 private int index; private static final double pai=3.14; //在声明时同时赋值,往往与static一起使用 private final int level; public Test(){ level=0;

qq_51352148的博客 479
上一篇: Java语言的特性及上转型对象
下一篇: JDK1.8新特性之接口中的静态方法与默认方法
至学者
博客等级 码龄9年 180粉丝 773原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值