【JavaSE】final与abstract关键字

简介: final与abstract关键字

前言🙉

final和abstract都用于修饰类的成员,存在的意义都是用于优化限定,让类与类之间,类和成员之间变得更加灵活,结合方式更加多元,从而更加高效,简便地实现各种需求和功能。abstract体现的抽象思想是提高代码复用性的重要映射

一.final

1.定义与作用

🟠final-代表最终的,最后的。可以修饰类,属性,方法和局部变量
在这里插入图片描述

使用场景:

🟤当不希望类被继承时,可以用final修饰(太监类)
🟤当不希望父类的某个方法被子类覆盖重写
🟤当不希望类的某个属性值被修改
🟤当不希望某个局部变量被修改

2注意事项

🟤 1.final修饰的属性叫常量,即不可改变的
🟤2.final修饰的属性在定义时,必须赋初值,而且以后无法修改
可以在定义时赋值,也可以在构造器和代码块中赋值
🟤3.若final修饰的属性是静态的,则初始化的位置只能在定义时,静态代码块中
🟤4.final类不能被继承,但可以实例化对象(这也是网上称作为太监类的原因)
🟤5.如果类没有被final修饰,但是有final修饰的方法,则该方法不能被重写,但类可以被继承
🟤6.如果一个类已经是final类就没有必要把方法用final来修饰,因为他无法被继承
🟤7.final不能修饰构造方法
🟤8.final和static可以搭配使用在类不被加载的情况下调用方法
🟤9.包装类和String类都是final类

二.abstract

1.定义与作用

abstract-意为抽象的,当父类的某些方法要声明,但没有具体的实现形式,可以将其声明为抽象方法,这时用abstract修饰

2.注意事项

🟤1.抽象类不能被实例化
🟤2.抽象类不一定要包含抽象方法
🟤3.一个类包含了抽象方法,则这个类必须声明为抽象类
🟤4.abstract只能修饰类和方法不能修饰属性和其他的
🟤5.抽象类可以有任何成员(具有类的性质)
🟤6.抽象方法不能有主体,写法如下
🟤7.如果一个类继承了一个抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类
🟤8.抽象方法不能用private,final,static修饰因为这些类都和重写相违背

✔️抽象方法写法:

public abstract long calSum(); //这就是一个抽象方法

3.应用体现

✔️抽象类的一个具体应用:
▶️通过利用继承关系与抽象方法实现一个计算不同运算方法耗时的问题
▶️把父类的一个方法抽象出来,让子类重写该方法,达到提高代码复用性简化程序的目的。

public abstract class Template01 {
    public abstract long calSum();  //把方法抽象出来
    public void cal(){
        long date1=System.currentTimeMillis();  //起始时间
        calSum();  //调用抽象方法 方便子类重写
        long date2=System.currentTimeMillis(); //结束时间
        System.out.println("执行所用时间"+(date2-date1)+"计算结果是:"+calSum());  //耗时
    }
}
 class AA extends Template01{
    public long num=0;
    @Override
    public long calSum() {  //重写父类的抽象方法
        for (int i = 0; i < 10000000; i++) {
            num*=i;
        }return num;
    }
}
 class BB extends Template01{
    public long num=0;
    @Override
    public long calSum() {   //重写父类的抽象方法
        for (int i = 0; i < 10000000; i++) {
            num+=i;
        }return num;
    }
}
🌦️如果不通过抽象方法,我们可能要在子类中把计算耗时的功能写出来,然后在类中修改不同的形式的calSum()方法来达到目的,利用抽象方法,只需要在各自的的类中重写一下calSum()然后更改形式就行。这就是提高代码复用性的一种体现~
相关文章
|
JSON 安全 IDE
基于ESP8266网络天气时钟的OLED显示
【8月更文挑战第25天】基于ESP8266的网络天气时钟通过OLED显示屏提供直观的时间与天气信息。硬件包括ESP8266开发板、OLED显示屏及其他元件。软件实现涉及Wi-Fi连接、天气API数据获取、NTP时间同步及OLED显示控制。显示内容设计包括清晰的时间格式与详细的天气描述,支持图标展示。项目支持自动更新机制、低功耗模式,并可扩展闹钟等功能。开发者需根据具体环境调整优化,确保系统稳定可靠。
770 0
|
9月前
|
传感器 人工智能 安全
运营商三要素API的实战指南:实现 “人 - 证 - 号” 三位一体核验
在数字身份欺诈频发的背景下,传统单点验证已无法满足高安全需求。探数API推出的“运营商三要素核验API”,通过姓名、身份证号、手机号的三重交叉验证,构建起“铁三角”防线,广泛适用于金融、政务、电商等领域。该API支持一致性验证及基础信息返回(可选),具备高准确性与防伪性,远超单一或双因素验证方式。其调用流程简单,提供Python示例代码及异常处理建议,助力打造更安全的数字身份体系,成为连接多领域的关键桥梁。未来,多因子融合的身份认证将成为趋势,而三要素核验API正是当前可信数字身份的重要基石。
1026 2
|
存储 Java 数据安全/隐私保护
Java的文件管理系统都有什么?
Java的文件管理系统都有什么?
936 3
|
12月前
|
人工智能 自然语言处理 搜索推荐
马斯克AI Grok 3 国内如何使用?请收下这篇新手指南!
Grok AI,由埃隆·马斯克(Elon Musk)旗下的人工智能初创公司 xAI 于 2023 年 11 月推出,迅速成为 AI 领域的一颗耀眼新星
6092 80
|
存储 关系型数据库 MySQL
失物招领|基于Web的校园失物招领系统的设计与实现(一)
失物招领|基于Web的校园失物招领系统的设计与实现
1425 0
|
算法 安全 Linux
万字详解并发编程!!!
本文介绍了并发编程的基本概念和技术,涵盖了操作系统的发展历程、进程与线程的原理和使用方法。主要内容包括: 操作系统发展史:从手工操作到多道程序系统、分时系统、实时系统,再到通用操作系统,逐步介绍了操作系统的演变过程。 并发编程技术:强调并发编程的目标是充分利用CPU资源,提高系统性能 进程:详细讲解了进程的概念、组成、状态、调度算法、进程间通信(IPC)以及守护进程和僵尸进程等问题。 线:介绍了线程的基本概念、与进程的区别、线程的创建、多线程共享资源、线程同步与互斥锁、递归锁和死锁问题 5. **队列**:讲解了队列的基本概念,包括先进先出队列、后进先出队列和优先级队列,并提供了具体的实现示例
801 38
|
设计模式 监控 数据库
代理模式(Proxy Pattern)
代理模式(Proxy Pattern)是一种设计模式,通过一个中间对象(代理)来间接访问目标对象,以控制访问权限或添加额外功能。常见的代理类型包括远程代理、虚拟代理、保护代理和智能引用代理。代理模式常用于延迟加载、权限控制、日志记录等场景,能够提高系统的灵活性和安全性。
|
12月前
|
负载均衡 JavaScript 前端开发
分片上传技术全解析:原理、优势与应用(含简单实现源码)
分片上传通过将大文件分割成多个小的片段或块,然后并行或顺序地上传这些片段,从而提高上传效率和可靠性,特别适用于大文件的上传场景,尤其是在网络环境不佳时,分片上传能有效提高上传体验。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
供应链 NoSQL Java
关于Redisson分布式锁的用法
Redisson分布式锁是实现分布式系统中资源同步的有效工具。通过合理配置和使用Redisson的各种锁机制,可以确保系统的高可用性和数据一致性。本文详细介绍了Redisson分布式锁的配置、基本用法和高级用法,并提供了实际应用示例,希望对您在实际项目中使用Redisson分布式锁有所帮助。c
1952 10

热门文章

最新文章