Java this、final等关键字总结

发布时间 - 2026-01-11 00:40:59    点击率:

this

关键字this引用对象自身。它也可以在构造方法内部用于调用同一个类的其他构造方法。

隐藏的静态变量可以通过”类.静态变量”来引用,而隐藏的实例变量就需要使用”this.实例变量”来引用。

调用一个重载的构造方法this引用是必须的。

this是个隐式参数,代表当前对象

publie class Student{
 private String name; 
 public void setName(String name){ 
 this.name=name; //this.name为当前对象的成员变量 
} }

如果某个构造方法的第一个语句具有形式this( ••• ),那么这个构造方法将调用同一类中的其他构造方法。

注意:

在构造器中this(…)必须放在该构造器的第一行。

this不能出现在静态方法里面

super

super关键字代指父类,可以用于调用父类的普通方法和构造方法。

super()表示调用父类的构造器

super.方法来引用父类的方法

super()也和this()一样必须放在方法的第一句

super()和this()不能同时出现

super可以屏蔽子类属性和父类属性重名时带来的属性遮盖,super. 表示调用父类的方法或属性

在子类的构造器中如果没有指定调用父类的哪一个构造器,那么就会调用父类的无参构造器,即super()

注意:

父类的构造器不能被子类继承

方法和属性可以被继承,权限不限制能否继承过来,限制的是能否直接访问

先构造父类,后构造子类

instanceof

用法:引用 instanceof 类名

判断这个引用所指向的对象是否属于这个类。

用在强制转换之前,避免类型转换异常。

 if(a instanceof Dog){ 
 Dog d=(Dog)a; 
 } 
implements

一个类实现一个接口必须实现接口中所有的方法,否则其为抽象类,并且在实现类中的方法要加上public(不能省略)。

类中的默认修饰符:default。

接口中的默认修饰符:public。

一个类除了继承另一个类外(只能继承一个类),还可以实现多个接口(接口之间用逗号分隔)。

static

把对象相关的变成类相关的,它可以修饰属性、方法、代码块和内部类.

static修饰属性(类变量):

那么这个属性就可以用” 类名.属性名 “来访问,也就是使这个属性成为本类的类变量,为本类对象所共享。

类加载的过程

类本身也是保存在文件中(字节码文件保存着类的信息)的,Java会通过I/O流把类的文件读入JVM(java虚拟机),这个过程称为类的 加载。

JVM会通过类路径(CLASSPATH)来找字节码文件。需要的时候才会进行类加载,生成对象时是先加载后构造

类变量,会在加载时自动初始化,初始化规则和实例变量相同。

注意:

类中的实例变量是在创建对象时被初始化的。

static修饰的属性,是在类加载时被创建并进行初始化,类加载的过程只进行一次,也就是类变量只会被创建一次。

static修饰方法(静态方法):

会使这个方法成为整个类所公有的方法,可以用” 类名.方法名 “访问。

static修饰的方法,不能直接访问本类中的非静态成员,但本类的非静态方法可以访问本类的静态成员。

在静态方法中不能出现this关键字。

父类中是静态方法,子类中不能覆盖为非静态方法,在符合覆盖规则的前提下,在父子类中,父类中的静态方法可以被子类中的静态方法覆盖,但是没有多态。(在使用对象调用静态方法时其实是调用编译时类型的静态方法)

java中的main方法必须写成static的原因:

在类加载时无法创建对象,而静态方法可以不通过对象调用,所以在类加载时就可以通过main方法入口来运行程序。

static修饰初始代码块:

这时这个初始代码块就叫做静态初始代码块,这个代码块只在类加载时被执行一次。

可以用静态初始代码块初始化一个类。

动态初始代码块,写在类体中的“{}”,这个代码块是在生成对象时运行,这种代码块叫动态初始代码

final

修饰符final:不允许改变,可以修饰变量、方法、类。

final修饰变量:

被fianl修饰的变量就会变成常量,一旦赋值不能改变

常量可以在初始化时直接赋值,也可以在构造方法里赋值,只能在这两种方法里二选一,不能不为常量赋值

常量不会有默认初始值

锁定栈,使栈中的数据不可以改变

静态常量只能在初始化时直接赋值

final修饰方法:

被final修饰的方法将不能被其子类覆盖,保持方法的稳定不能被覆盖

final修饰类:

被final修饰的类将不能被继承

final类中的方法也都是final的

注意:

final不能用来修饰构造方法

abstract:

修饰符abstract:抽象的,定义框架不去实现,可以修饰类和方法

abstract修饰类:

会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型

抽象类就相当于一个类的半成品,需要子类继承并覆盖其中的抽象方法,这时子类才又创建实例的能力,如果子类没有实现父类的抽象方法,那么子类也要为抽象类。

abstract修饰方法:

会使这个方法变成抽象方法,也就是只有声明而没有实现,实现部分以”;”代替,需要子类继承实现。

抽象方法代表了某种标准,定义标准,定义功能,在子类中去实现功能

(子类继承了父类并需要给出从父类继承的抽象方法的实现)。

方法一时间想不到怎么被实现,或有意要子类去实现而定义某种标准,这个方法可以被定义为抽象。

注意:

有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以全是具体方法。

关键字 描述
int 32位整型数
boolean 布尔数据类型
float 32-bit单精度浮点数
long 64位整型数
short 16位数字
byte 8-bit 有符号数据类型
double 64-bit双精度浮点数
char 16-bit Unicode字符数据类型
abstract 抽象方法,抽象类的修饰符
extends 表示一个类是另一个类的子类
implements 表示一个类实现了接口
assert 断言条件是否满足
break 跳出循环或者label代码段
continue 不执行循环体剩余部分
case switch语句的一个条件
catch 和try搭配扑捉异常信息
final 表示一个值在初始化之后就不能再改变了,表示方法不能被重写,或者一个类不能有子类
finally try 语句不管是否发生异常都要执行的语句块
class 定义类
const 未使用
default switch语句中的默认分支
enum 枚举类型
goto 未使用
if 条件语句
import 导入类
instanceof 测试一个对象是否是某个类的实例
interface 接口,一种抽象的类型,仅有方法和常量的定义
native 表示方法用非java代码实现
new 分配新的类实例
package 一系列相关类组成一个包
private 表示私有字段,或者方法等,只能从类内部访问
protected 表示字段只能通过类或者其子类访问,子类或者在同一个包内的其他类
public 表示共有属性或者方法
return 方法返回值
static 表示在类级别定义,所有实例共享的
strictfp 浮点数比较使用严格的规则
super 表示基类
switch 选择语句
synchronized 表示同一时间只能由一个线程访问的代码块
this 表示调用当前实例,或者调用另一个构造函数
throw 抛出异常
throws 定义方法可能抛出的异常
transient 修饰不要序列化的字段
try 表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码
void 标记方法不返回任何值
volatile 标记字段可能会被多个线程同时访问,而不做同步

希望本篇文章可以帮到大家


# Java  # 关键字  # this关键字  # final关键字  # Java中final关键字的使用与注意总结  # 详解Java中的final关键字  # java多线程关键字final和static详解  # Java基础教程之final关键字浅析  # Java中final关键字详解及实例  # 学习Java的static与final关键字  # Java关键字final、static使用总结  # 浅析对Java关键字final和static的理解  # 浅谈Java中的final关键字与C#中的const  # readonly关键字  # 全面解析java final关键字  # 子类  # 类中  # 加载  # 本类  # 是在  # 抽象类  # 可以用  # 都是  # 会使  # 修饰符  # 就会  # 抛出  # 放在  # 多个  # 可以通过  # 浮点数  # 的是  # 整型  # 器中  # 是个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速上传自定义模板至建站之星?  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  Laravel Docker环境搭建教程_Laravel Sail使用指南  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  清除minerd进程的简单方法  七夕网站制作视频,七夕大促活动怎么报名?  如何快速搭建高效香港服务器网站?  如何用JavaScript实现文本编辑器_光标和选区怎么处理  如何基于云服务器快速搭建个人网站?  Python文本处理实践_日志清洗解析【指导】  EditPlus 正则表达式 实战(3)  高端企业智能建站程序:SEO优化与响应式模板定制开发  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  详解Huffman编码算法之Java实现  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  Laravel如何实现数据库事务?(DB Facade示例)  怎么用AI帮你设计一套个性化的手机App图标?  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  如何在Windows服务器上快速搭建网站?  Laravel如何使用Sanctum进行API认证?(SPA实战)  微信小程序 配置文件详细介绍  Laravel如何使用Blade组件和插槽?(Component代码示例)  制作旅游网站html,怎样注册旅游网站?  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  智能起名网站制作软件有哪些,制作logo的软件?  如何在香港服务器上快速搭建免备案网站?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  如何快速查询网址的建站时间与历史轨迹?  PythonWeb开发入门教程_Flask快速构建Web应用  Laravel怎么使用Intervention Image库处理图片上传和缩放  深入理解Android中的xmlns:tools属性  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  深圳网站制作培训,深圳哪些招聘网站比较好?  如何有效防御Web建站篡改攻击?  如何用腾讯建站主机快速创建免费网站?  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  如何在万网利用已有域名快速建站?  Linux后台任务运行方法_nohup与&使用技巧【技巧】  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  如何彻底删除建站之星生成的Banner?