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

java修饰符:abstract final static 的区别

文章目录

  • 前言
  • 一、三者的基本概念对比
  • 二、代码场景实操演示
    • 1. abstract用法演示:抽象类+抽象方法
    • 2. final用法演示:类/方法/变量
    • 3. static用法演示:类成员+静态方法+静态代码块+静态内部类
    • 4. 禁止组合的场景(面试高频坑点)
  • 总结

前言

面试官:「说说 abstract、final、static 这三个访问修饰符的区别?」
答:
abstract是声明抽象,需要被继承或实现,用于类、方法;
final是声明不可改变,用于类、方法、变量;
static是声明静态,属于类而非实例,用于类、方法、变量、代码块;
其中abstract的核心理念是未完成,待实现,
final则是已完成,不可变,
static是属于类,但不依赖于实例。

阅读建议:建议观看视频后再阅读文章理解更深哦!建议观看视频后再阅读文章理解更深哦!

视频观看地址:视频跳转链接

一、三者的基本概念对比

修饰符作用可修饰的对象核心理念
abstract声明抽象,需要被继承/实现类、方法“未完成,待实现”
final声明不可改变类、方法、变量“已完成,不可变”
static声明静态,属于类而非实例类、方法、变量、代码块“属于类,不依赖实例”

二、代码场景实操演示

1. abstract用法演示:抽象类+抽象方法

//1. abstract用法演示:抽象类+抽象方法 abstract class AbstractDemo{//[重点]抽象方法:只有声明,无实现,强制子类重写 public abstract void abstractMethod();// 抽象类可以包含普通方法 public voidnormalMethod(){System.out.println("抽象类中的普通方法");}}

子类必须实现抽象方法

// 子类必须实现抽象方法 class ConcreteDemo extends AbstractDemo{@Override public voidabstractMethod(){System.out.println("子类实现抽象方法");}}

abstract核心:

  • 抽象类不能实例化,必须被继承;抽象方法必须被子类实现(除非子类也是抽象类);
  • 作用是强制子类遵循统一的接口规范,常用于框架的顶层设计(如Java集合的List接口)。

2. final用法演示:类/方法/变量

//2. final用法演示:类/方法/变量 //[重点]final类:禁止被继承 final class FinalClass{final int q=1;//[重点]final方法:禁止被子类重写 public final voidfinalMethod(){System.out.println("final方法,不可重写");}}

final核心:

  • final类禁止继承(如String类),final方法禁止重写,final变量赋值后不可修改;
  • 作用是保证代码的稳定性,防止子类篡改父类逻辑,常用于定义常量、核心工具类。

3. static用法演示:类成员+静态方法+静态代码块+静态内部类

//3. static用法演示:类成员+静态方法+静态代码块+静态内部类 class StaticDemo{//[重点]static变量:属于类,所有实例共享 public static int staticCount=0;public int instanceCount=0;//[重点]static代码块 static{System.out.println("静态代码块执行");}// //[重点]static内部类 static class Inner{voidshow(){System.out.println("静态内部类");}}//[重点]static方法:属于类,不能访问非静态成员 public static voidstaticMethod(){System.out.println("静态方法,访问静态变量:"+ staticCount);// 编译报错:静态方法不能访问非静态成员 // System.out.println(instanceCount);}}

static核心:

  • static变量/方法属于类本身,而非实例,所有实例共享同一个静态变量;
  • 静态方法不能访问非静态成员(因为静态方法加载时,实例还未创建),常用于工具方法(如Math类的静态方法)。

4. 禁止组合的场景(面试高频坑点)

  • 编译报错:abstract和final不能同时修饰类(抽象类需要被继承,final类禁止继承)

abstract final class InvalidClass {}

  • 编译报错:abstract和static不能同时修饰方法(抽象方法需要重写,静态方法不能重写)

public abstract static void invalidMethod();

总结

@作者:加辣椒了吗?
简介:憨批大学生一枚,喜欢在博客上记录自己的学习心得,也希望能够帮助到你们!
我在「辣椒微创」有更详细的案例和工具,你应该用得上!(主页有指路)
🚀 【创业项目】:副业灵感、轻资产玩法、互联网创收思路
📦 【资源分享】:PPT、音效、模板、字体、插件等创作者工具合集
🔧 【软件下载】:精选高效、靠谱的生产力工具及安装指南
💻 【编程开发】:编程学习资源、项目源码、开发工具、实战案例
🛒 【薅羊毛】:精选各种优惠折扣、平台补贴信息,帮你省钱放大收益。

http://www.jsqmd.com/news/642498/

相关文章:

  • 高效智能的1Fichier下载管理器:一站式文件下载解决方案
  • Spring Boot升级到2.7会有哪些坑?
  • Microsoft Edge 浏览器下载文件时,提示【xxx可能会损害你的设备。是否仍要保留?】解决方案
  • Oracle19c静默建库实战:如何用dbca.rsp模板快速生成生产级数据库?
  • ESP32 Web服务器远程控制LED的实践指南
  • 2026届毕业生推荐的十大AI写作平台解析与推荐
  • STM32CubeMX实战:5分钟搞定SD卡Fatfs文件系统移植(避坑DMA中断配置)
  • 仅限首批200名AI架构师开放:多模态幻觉压力测试工具包(含合成幻觉数据集+动态干扰注入器+ROC-AUC可信度评分模块)
  • VIVO游戏直播助手
  • SVGD vs. 变分推断:哪个更适合你的概率模型?从原理到选择的深度对比
  • SpringBoot深度历险:基础+进阶+项目实战+源码解析
  • DenseNet vs ResNet:在CIFAR-10数据集上,谁的参数更少、精度更高?一次彻底的对比实验
  • 东风拟斥资2.5亿增持岚图汽车:已控制后者69.47%股权
  • MQTT 消息推送详解
  • 2025-2026年国内外教少儿英语机构推荐:五大口碑产品评测对比领先小学阶段应试提分案例 - 品牌推荐
  • Python实战:用PyWavelets库实现连续小波变换(CWT)信号分析
  • Quill 编辑器光标意外跳转至顶部的解决方案
  • 【AIAgent代码审查黄金标准】:2026奇点大会联合IEEE发布的首个L3级可信审查评估框架(仅限首批200家获授)
  • 5大核心模块:重新定义英雄联盟游戏体验的技术解决方案
  • **链路追踪实战:用Go语言打造分布式系统的“心跳图谱”**在微服务架构日益普及
  • 【原创】阿里云Windows虚拟主机低成本部署ChatGPT代理服务实战
  • 企业级微服务架构设计与实践:从理论到落地
  • 【工业级多模态服务架构白皮书】:基于12个千万级AI应用验证的6层解耦架构(含视觉/语音/文本协同调度协议)
  • 金纳米棒包载阿霉素,DOX@AuNRs,金纳米棒包载紫杉醇,PTX@AuNRs化学特性
  • AIAgent可观测性治理盲区大起底:Trace丢失率超67%?用eBPF+OpenTelemetry构建全链路Agent行为图谱
  • 澜起科技年营收55亿:净利22亿 上海融迎及一致行动人套现超10亿
  • 如何用智能脚本3分钟搞定Windows与Office永久激活?
  • 告别云端依赖:用STM32F405+EC600N搭建一个离线/弱网可用的OTA固件升级系统
  • 壁挂式铜铝散热片(背篓)为何成为优选?
  • 手把手教你解决CMake升级后的CMAKE_ROOT错误(Ubuntu环境)