java中关键字

news2024/12/28 19:19:19

主要是java开发面试或笔试中常见或者常考的关键字特性介绍

文章目录

  • 类方法和变量修饰符
    • final关键字
    • abstract关键字
    • static 关键字
      • 关于static执行顺序
    • implements 和 interface 关键字

类方法和变量修饰符

final关键字

用于声明不可变性,它可以应用于变量、方法和类。以下是 final 关键字在不同上下文中的用法。

final变量:
final 变量是常量,一旦赋值后,其值不可更改。
final 实例变量必须在对象的构造函数中进行初始化,或者在声明时直接初始化。
final 本地变量(在方法或代码块中声明的变量)必须在声明时初始化,不能再次赋值。

final int x = 10; // 声明并初始化一个final变量
final double PI = 3.14159;

public void exampleMethod() {
    final int y; // 声明一个final本地变量
    y = 20; // 初始化final本地变量
}

final方法:
final 方法是不可覆盖(override)的方法。子类不能重写父类中的 final 方法。
常用于确保方法的逻辑在子类中不被修改。

public class Parent {
    public final void finalMethod() {
        // 这个方法在子类中不能被重写
    }
}

final类:
final 类是不可继承的类,即不能有子类。
通常用于防止类被继承和修改,或者表示一个类已经完全实现,不能再被扩展。

public final class FinalClass {
    // 此类不能被继承
}

final 的主要作用是为了确保不可变性、安全性和稳定性。在多线程环境中,final 变量可以用来实现线程安全,因为它们保证了在构造过程中的可见性,并且一旦初始化后,其值不会发生改变。final 方法和类则用于确保不变的行为和避免子类对其进行不当修改。

abstract关键字

java中,抽象类(Abstract class)是一种特殊的类,它不能被实例化,一般作为其他类的基类(父类),它定义了一些方法的声明,但不提供方法的实现,留给它的子类来完成实现。

  1. 声明抽象类
public abstract class AbstractClass{
	// 抽象方法,没有方法体
	public abstract void abstractMethod();
	// 普通方法,有方法体
	public void regularMethod()
	{
		System.out.print("这是一个普通方法");
	}
}
  1. 继承抽象方法
    子类继承抽象类,并实现其中的抽象方法。
public class ConcreteClass extends AbstractClass{
	// 实现抽象方法
	public void abstractMethod()
	{
		System.out.print("这是抽象方法的实现");
	}
}
  1. 实例化子类
AbstractClass obj = new ConcreteClass()
obj.abstractMethod();  // 调用子类的实现

注意!

  1. 一个类包含抽象方法,他必须被声明为抽象类
  2. 子类必须实现所有父类的抽象方法

static 关键字

static 用于定义静态成员(静态变量和静态方法)以及静态代码块。
static 关键字的主要作用是使成员与类相关,而不是与类实例相关。

  1. 静态变量
    静态变量也被称为类变量,它属于类而不是类的实例,在类加载时分配内存,并且只有一份副本,所有实例对象共享相同的静态变量。
public class Myclass{
	public static int staticVartiable = 10;
	// 类的其他实现
}
  1. 静态方法
    静态方法属于类而不是实例对象,可以通过类名直接调用,而不需要创建类的实例。
public class Myclass{
	public static void staticMethod()
	{
		System.out.println("这是静态方法");
	}
	// 类的其他实现
}
  1. 静态代码块
    静态代码块是在类加载时就执行的代码块,用于初始化静态变量或者执行一些静态操作。在类中他只执行一次。
public class Myclass{
	static {
	Sytem.out.print("static block");
}
}

关于static执行顺序

无继承关系:

public class Example {
    static {
        // 静态代码块
        System.out.println("Static block");
    }

    {
        // 代码块
        System.out.println("Non-static block");
    }

    public Example() {
        // 构造函数
        System.out.println("Constructor");
    }

    public static void main(String[] args) {
        new Example();
        new Example();
    }
}

输出结果如下:
-------------------------------------
Static block
Non-static block
Constructor
-------------------------------------
Non-static block
Constructor

有继承关系

// 父类
public class FatherExample {
    {
        System.out.println("Father Non-static block");
    }
    static
    {
        System.out.println("Father Static block");
    }
    public void Example()
    {
        System.out.println("Father Constructor");
    }
}
// 子类
public class Example extends FatherExample{
    static {
        System.out.println("Son Static block");
    }
    {
        System.out.println("Son Non-static block");
    }
    public void Example()
    {
        System.out.println("Son Constructor");
    }
    public static void main(String[] args)
    {
        new Example();
        new Example();
    }
}

执行结果:
-------------------------------------
Father Static block
Son Static block
Father Non-static block
Son Non-static block
-------------------------------------
Father Non-static block
Son Non-static block

implements 和 interface 关键字

implements是java中的一个关键字,用于实现接口,接口是java中的一种抽象类型,定义了一组抽象方法,而类可以实现implements这些接口来提供具体的实现。

1.接口定义
接口通过interface关键字定义,接口中的方法默认是抽象的,没有方法体,接口中通常包含常量

interface MyInterface{
	// 两个抽象方法,一般接口中不定义成抽象方法,依靠写作规范约束
	void method1() 
	void method2()
}
  1. 类实现接口
    类可以使用implements关键字来实现一个或多个接口。实现接口类中必须提供接口中所有声明的首相方法的具体实现。
public class MyClass implements MyInterface,MyInterface2
{
	@Override  //重写的意思
	public void method1(){
		// 具体实现
	}
	@Override  //重写的意思
	public void method2(){
		// 具体实现
	}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1106039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅谈云原生

目录 1. 云原生是什么? 2. 云原生四要素 2.1 微服务 2.2 容器化 2.3 DevOps 2.4 持续交付 3. 具体的云原生技术有哪些? 3.1 容器 (Containers) 3.2 微服务 (Microservices) 3.3 服务网格 (Service Meshes) 3.4 不可变基础设施 (Immutable Inf…

VUE:侧边弹出栏组件,组件中有树状图,搜索框可筛选树状图节点,可收缩

作者:CSDN @ _乐多_ 本文记录了一个侧边弹出栏组件代码。代码即插即用。 弹出栏中有树状图,搜索框,可收缩。 其中,搜索框可筛选树状图节点。点击右侧小按钮可以收缩弹出框,点击X号也可以收缩弹出框。 文章目录 一、组件代码代码依赖element-plus库。且需要下载几个svg图…

CNVD-2021-26422:亿邮电子邮件系统moni_detail.do远程命令执行漏洞复现 [附POC]

文章目录 亿邮电子邮件系统 moni_detail.do 远程命令执行 CNVD-2021-26422漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 亿邮电子邮件系统 moni_detail.do 远程命令执行 CNVD-2021-26422漏洞复…

TSINGSEE智慧港口可视化智能监管解决方案,助力港口码头高效监管

一、方案背景 全球经济一体化进程以及国际市场的不断融合,使得港口码头成为了大型货运周转中心,每天数以百计的大型货轮、数以千计的大型集装箱、数以万计的人员流动。港口作为货物、集装箱堆放及中转机构,具有昼夜不歇、天气多变、环境恶劣…

基于内存的分布式NoSQL数据库Redis(三)常用命令

文章目录 知识点07:String类型的常用命令知识点08:Hash类型的常用命令知识点09:List类型的常用命令知识点10:Set类型的常用命令知识点11:Zset类型的常用命令知识点12:BitMap类型的常用命令知识点13&#xf…

PMP考完后应该考什么?

PMP(项目管理专业)认证是全球范围内最受认可和尊重的项目管理资格证书之一。通过PMP考试的人已经展示了他们在项目管理领域的知识和技能。然而,项目管理是一个不断发展和变化的领域,持续学习和进一步提升自己的能力是非常重要的。…

【web前端】web前端设计入门到实战第一弹——html基础精华

前端 一:图片属性二:音频标签三: 视频标签四:链接标签五:列表标签5.1.无序列表5.2.有序列表3.自定义列表 六:表格6.1合并单元格 七:input标签八:select系列九: 文本域标签…

开发工具分享 - Mybatis SQL日志格式化H5

目录 一、 序言二、代码示例三、部署至Nginx 一、 序言 平时通过IDEA开发,可以直接装相关MybatisLogFormat的插件直接对控制台里的Mybatis SQL日志进行格式化。一旦离开本地环境,到了测试或者线上,就得自己手动拼参数了。 简单的SQL还好&am…

文件夹怎么隐藏?电脑重要文件夹隐藏的方法

对于存放了重要数据的文件夹来说,最关键的就是保护文件夹的数据安全,而隐藏就是常见的文件夹保护方法之一。那么,电脑重要文件夹该怎么隐藏呢?下面我们就一起来了解一下。 文件夹属性隐藏 在Windows系统中,提供了隐藏…

再见Jenkins!你好,GitLink引擎,更强大的自动化部署工具!

文章目录 写在前面一、准备工作1.1 注册GitLink账号1.2 托管项目1.3 新建项目管理引擎流水线 二、开始构建流水线2.1 进入图形流水线编辑页2.2 添加git clone节点2.3 添加shell节点2.4 添加allure html节点2.5 添加新建GitLink疑修节点2.6 添加钉钉通知节点2.7 设置任务触发器2…

网站如何才能不被黑,如何做好网络安全

当企业网站受到攻击时,首页文件可能被篡改,百度快照也可能被劫持并重定向到其他网站。首要任务是加强网站的安全防护。然而,许多企业缺乏建立完善的网站安全防护体系的知识。因此,需要专业的网站安全公司来提供相应的保护措施。今…

jquery.i18n.properties.js使用及seo优化

使用方法 具体使用方法可以参考jquery.i18n.properties的使用讲解与实例 这篇博客,这里仅简单示例 1、下载 jquery.i18n.properties.js文件,地址: jquery.i18n.properties.js 2、设创建语言properties文件,如:strings…

vue2-org-tree 树型结构的使用

vue2-org-tree 用于创建和显示组织结构树状图,帮助开发者轻松地可视化组织结构,例如公司的层级、部门之间的关系、团队成员等。其主要功能有:自定义节点、可折叠节点、支持拖放、搜索、导航等功能。 这里我们主要使用 vue2-org-tree 进行多次…

苹果平板可以用别的电容笔吗?电容笔和Apple pencil区别

和苹果原装的Pencil相比,这种平替的电容笔并没具备重力压感,只有一种倾斜的压感功能。如果你不经常用来作画,一支普通的电容笔就足够了。不管是用来记笔记,还是用来解决一些数学问题,都能用得上。再说了,即…

ui设计师简历自我评价的范文(合集)

ui设计师简历自我评价的范文篇一 本人毕业于艺术设计专业,具有较高的艺术素养,平时注重设计理论知识的积累,并将理论应用到作品中。了解当下设计的流行趋势,设计注重细节、重视用户体验,对色彩搭配有着浓厚的兴趣&…

Python学习之逻辑中的循环有哪些?

1. for循环 for 循环用于迭代 (遍历)一个序列,例如列表、元组、字符串或字典中的元素。 通常使用 for 循环来遍历可迭代对象中的元素,并对每个元素执行相同的操作。 示例: for item in iterable: # 执行操作2.while循环 -while循环用于在满足某个条件…

新能源车企们在“金九银十”的热潮里改了“策略”?

9月,各大新能源车企销量拉锯战落下帷幕,比亚迪稳坐冠军之位,9月累计销量达286903辆,环比增长18.8%;特斯拉仍旧位列第二,9月销量74073辆,环比增长14.5%;吉利汽车“超车”广汽埃安霸榜…

idea热加载,JRebel 插件是目前最好用的热加载插件,它支持 IDEA Ultimate 旗舰版、Community 社区版

1.如何安装 ① 点击 https://plugins.jetbrains.com/plugin/4441-jrebel-and-xrebel/versions 地址,下载 2022.4.1 版本。如下图所示: ② 打开 [Preference -> Plugins] 菜单,点击「Install Plugin from Disk…」按钮,选择刚下…

哈希(开放寻址法)代码模板

//开放寻址法 //数组长度一般要开到题目数据范围的2~3倍 #include<iostream> #include<cstring> using namespace std; //null代表无穷大 //最大和最小 //0x3f3f3f3f 1061109567&#xff0c;0xc0c0c0c0 -1061109568 const int N 2e5 3, null 0x3f3f3f3f;//取质…

需要影视解说配音的看过来,用它就对了

近年来&#xff0c;随着影视、动画等领域的快速发展&#xff0c;声音设计和配音成为了影片制作中不可或缺的一环。然而&#xff0c;并非每个人都拥有天赋般的配音技巧。面对这一困境&#xff0c;幸运的是&#xff0c;现在市面上有很多简单免费好用的配音软件&#xff0c;今天就…