一篇文章带你入门Java修饰符

一篇文章带你入门Java修饰符

Java中修饰符是控制访问权限和类、变量和方法行为的关键字。在Java中,共有四类修饰符:访问修饰符、非访问修饰符、类修饰符和方法修饰符。接下来将详细介绍这四类修饰符以及它们的使用规范。

一、访问修饰符

访问修饰符 含义
public 所有类可见
protected 同一包内和子类可见
private 仅本类可见
没有修饰符 同一包内可见

使用规范

  1. 类成员变量和方法通常使用私有(private)访问修饰符;
  2. 向外暴露接口的方法使用公共(public)访问修饰符;
  3. 继承和使用多态时,使用受保护(protected)访问修饰符。

示例1

public class Example1 {
    private int a; // 私有成员变量a

    public void setA(int a) { // 公共方法setA
        this.a = a;
    }

    public int getA() { // 公共方法getA
        return a;
    }
}

在上面的例子中,成员变量a使用私有(private)访问修饰符,而setA和getA方法使用公共(public)访问修饰符。这样做的目的是为了保证类内部的数据安全性,并对外暴露公共接口(setA和getA方法)获取数据。

示例2

package example;

public class Example2 {
    protected int a; // 受保护成员变量a
}

在上面的示例中,成员变量a使用受保护(protected)访问修饰符。因此,在Example2类的子类中(假设Example3为其子类),可以访问a变量,而且在包example中的其他类也可以访问。

二、非访问修饰符

非访问修饰符 含义
static 静态变量和方法
final 常量
abstract 抽象方法
transient 反序列化时不被序列化的变量
volatile 多线程访问变量

使用规范

  1. 当多个对象共享某一变量时,使用静态(static)修饰符;
  2. 在定义常量时,使用常量(final)修饰符;
  3. 当需要在子类中重写方法时,使用抽象(abstract)修饰符;
  4. 当需要将对象序列化和反序列化时,使用瞬态(transient)修饰符;
  5. 当多个线程需要访问同一变量时,使用易失性(volatile)修饰符。

示例1

public class Example3 {
    private static int count = 0; // 静态变量count

    public Example3() {
        count++; // 每创建一个对象,count值加1
    }

    public static int getCount() { // 静态方法getCount
        return count;
    }
}

在上面的示例中,count变量使用静态(static)修饰符,这样在创建Example3对象时,每次都会自增count的值。同时,getCount方法也使用了静态修饰符,以便于在其他地方获取已经创建对象的数量。

示例2

public class Example4 {
    private final double PI = 3.1415926; // 常量PI

    public double getCircleArea(double r) { // 根据半径计算圆的面积
        return PI * Math.pow(r, 2); // 使用PI常量
    }
}

在上面的示例中,常量PI使用常量(final)修饰符。由于PI是圆周率,其值不可变,因此常量修饰符保证了PI的常量性。同时,在getCircleArea方法中通过PI常量计算圆的面积,这样不仅保证了结果的精确性,也降低了代码维护成本。

三、类修饰符

类修饰符 含义
final 类不能被继承
abstract 抽象类不能被实例化

使用规范

  1. 在设计枚举类或单例模式时,使用final修饰符来保证类的唯一性;
  2. 在设计基类时,使用抽象(abstract)修饰符来保证衍生类必须实现的方法和属性。

示例1

public final class Example5 {
    private static final Example5 instance = new Example5(); // 单例类

    private Example5() {}

    public static Example5 getInstance() {
        return instance;
    }
}

在上面的示例中,由于Example5类是一个单例模式,其不能被其他类继承。因此需要使用final修饰符来保证类的唯一性。

示例2

public abstract class Example6 {
    public abstract void print(); // 抽象方法,子类必须实现

    public void show() {
        System.out.println("Hello World!");
    }
}

在上面的示例中,由于Example6类是一个基类,其包含一个抽象(abstract)方法print和一个实例方法show。由于print方法是抽象方法,不能被实现,因此需要所有子类来实现print方法,这样保证了程序的稳定性和可扩展性。

四、方法修饰符

方法修饰符 含义
final 不能被重写
abstract 无实现方法的方法

使用规范

  1. 对于不需要被继承或修改的方法,可以用final修饰符保证方法不可重写;
  2. 对于基类中需要被子类实现的方法,应该使用抽象(abstract)修饰符保证该方法无实现,强制子类实现。

示例1

public class Example7 {
    public final void doSomething() {
        // 不能被子类重写
    }
}

在上面的示例中,doSomething方法使用了final修饰符,表示该方法不能被子类重写,保证了程序的稳定性和可扩展性。

示例2

public abstract class Example8 {
    public abstract void print(); // 抽象方法,子类必须实现

    public void show() {
        System.out.println("Hello World!");
    }
}

在上面的示例中,print方法使用了抽象(abstract)修饰符,表示这是一个无实现方法。在基类中,print方法需要被所有子类实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇文章带你入门Java修饰符 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 一篇文章带你入门java算术运算符(加减乘除余,字符连接)

    一篇文章带你入门Java算术运算符 算术运算符简介 Java算术运算符是用于执行基本算数操作的运算符。常用的算术运算符包括加、减、乘、除和取模。此外,Java还提供了一个字符串连接运算符。 以下是Java算术运算符的列表: 运算符 描述 举例 + 加法运算符 5 + 3 等于 8 – 减法运算符 5 – 3 等于 2 * 乘法运算符 5 * 3 等于 15 …

    Java 2023年5月27日
    00
  • Java Files和Paths的使用demo详解

    “Java Files和Paths的使用demo详解”是关于Java中文件和路径操作的教程,下面是完整攻略: 简介 Java中文件和路径操作是日常开发中非常常见的操作,通过Files和Paths类可以轻松地实现文件和路径的创建、删除、移动、复制以及读写等操作。本教程旨在讲解Java中如何使用Files和Paths类进行文件和路径操作。 Files 创建文件 …

    Java 2023年5月19日
    00
  • ExtJs 实现动态加载grid完整示例

    下面是ExtJs实现动态加载grid完整示例的攻略: 概述 在实际开发中,有时候需要动态加载grid数据,在数据量较大的情况下,提高页面加载速度,减少用户等待时间,这就需要使用ExtJs实现动态加载grid数据。ExtJs中实现动态加载grid数据的方式有两种,一种是使用分页加载数据,另一种是使用滚动加载数据,下面我们将详细介绍这两种方式以及示例。 分页加载…

    Java 2023年5月20日
    00
  • jsp使用sessionScope获取session案例详解

    当我们在使用JSP进行开发时,经常需要使用到session来存储用户的信息。使用session,能够方便地在多个页面之间共享数据,因此我们需要掌握如何使用session。在本篇攻略中,我们将会使用sessionScope对象来获取session,并带您演示两个简单的使用示例。 什么是session? 在Web开发中,服务器与客户端之间通信使用的是HTTP协议…

    Java 2023年6月15日
    00
  • Java如何获取指定目录文件列表

    获取指定目录文件列表是 Java 编程中常见的操作之一,可以通过 Java 的 File 类来实现。下面是获取指定目录文件列表的完整攻略: 第一步:创建 File 对象 首先需要创建一个 File 对象来表示要获取的目录。File 对象可以接受一个目录路径作为参数,例如: File directory = new File("path/to/dir…

    Java 2023年5月20日
    00
  • 详细总结Java创建文件夹的方法及优缺点

    详细总结Java创建文件夹的方法及优缺点 在Java中,创建文件夹是一个常见的操作,无论是在后端开发还是在桌面应用程序中都很常用。本文将详细总结Java创建文件夹的方法及优缺点,包括三种方法。 方法一:使用File类的mkdir() File类是Java中的一个常用文件操作类,其中的mkdir()方法可以用于创建一个新的文件夹。 File file = ne…

    Java 2023年5月20日
    00
  • IDEA连接Mysql数据库的详细图文教程

    下面是“IDEA连接MySQL数据库的详细图文教程”的完整攻略,包含两条示例。 准备工作 首先需要准备好以下工具和环境:- IntelliJ IDEA(版本最好是Community或Ultimate,均支持插件安装)- MySQL数据库- MySQL JDBC驱动程序(可以从mysql官网下载) 安装MySQL JDBC驱动程序 下载MySQL JDBC驱动…

    Java 2023年5月20日
    00
  • Spring Boot 项目代码混淆,实战来了,再也不用担心代码泄露了!

    编译 简单就是把代码跑一哈,然后我们的代码 .java文件 就被编译成了 .class 文件 反编译 就是针对编译生成的 jar/war 包 里面的 .class 文件 逆向还原回来,可以看到你的代码写的啥。 比较常用的反编译工具 JD-GUI ,直接把编译好的jar丢进去,大部分都能反编译看到源码: 那如果不想给别人反编译看自己写的代码呢? 怎么做? 混淆…

    Java 2023年4月27日
    00
合作推广
合作推广
分享本页
返回顶部