一篇文章带你入门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 springboot项目jar发布过程解析

    下面是关于“Java springboot项目jar发布过程解析”的完整攻略: Java SpringBoot 项目Jar发布过程解析 简介 SpringBoot是Spring家族的一个全新框架,它使用了约定优于配置的理念,更加简化了Spring项目的搭建和配置过程。通过SpringBoot,我们可以快速高效地构建一个企业级的Java Web应用程序。 在使…

    Java 2023年5月19日
    00
  • ajax的json传值方式在jsp页面中的应用

    下面我将为你详细讲解“ajax的json传值方式在jsp页面中的应用”的攻略。 1. AJAX简介 AJAX(Asynchronous JavaScript and XML)即异步JavaScript和XML,是指通过JavaScript、XMLHttpRequest对象和DOM实现局部更新页面的技术。AJAX技术使得页面在不刷新的情况下,能够向服务器发起异…

    Java 2023年5月20日
    00
  • Java异常处理的五个关键字

    下面是“Java异常处理的五个关键字”的攻略: 异常处理的概念 Java 异常处理是一种机制,用于检测和处理代码中出现的错误或异常情况。当程序出现异常时,异常处理机制会终止当前的程序执行,并将异常信息传递给上层的代码,以便进行处理。 五个关键字 1. try try 语句块用于包含可能会抛出异常的代码。通常情况下,try 语句块后面会跟一个或多个 catch…

    Java 2023年5月27日
    00
  • Spring Data Jpa的四种查询方式详解

    下面是关于“Spring Data Jpa的四种查询方式详解”的完整攻略: Spring Data Jpa的四种查询方式详解 Spring Data Jpa是一个简化了JPA规范的框架,它提供了许多便利的功能,其中最重要的就是提供了四种查询方式。 命名查询 命名查询是指根据方法名进行查询。Spring Data Jpa会根据方法名的规则自动生成查询语句,无需…

    Java 2023年5月20日
    00
  • Java e.printStackTrace()案例讲解

    我将为您详细讲解“Java e.printStackTrace()案例讲解”的完整攻略。 Java e.printStackTrace()案例讲解 在Java开发中,我们经常会遇到程序发生异常的情况。当程序发生异常时,我们需要尽快地找到异常产生的原因,以便及时修复和调试代码。针对这种情况,Java中提供了一种非常有用的调试工具——e.printStackTr…

    Java 2023年5月25日
    00
  • PHP与Java对比学习日期时间函数

    PHP与Java对比学习日期时间函数 介绍 在Web开发中,常常需要处理日期时间相关的操作,包括获取当前时间、格式化输出时间、计算时间差等。PHP和Java是两个常用的Web编程语言,都提供了日期时间相关的内置函数。本篇文章将介绍PHP和Java的日期时间函数,并对比讲解它们的异同点。 PHP日期时间函数 获取当前时间 PHP提供了几个函数可以获取当前时间:…

    Java 2023年5月20日
    00
  • Java动态追踪技术探究之从JSP到Arthas

    Java动态追踪技术探究之从JSP到Arthas 背景介绍 在Java应用服务器中,如果出现了性能问题,我们需要通过一些工具来进行监控和追踪。常用的工具包括JProfiler,JVisualVM等,但是这些工具大多需要进行配置或者在启动时进行设置,并且需要连接到服务器上才能进行远程监控。基于这些问题,我们探究了一种新的Java动态追踪技术,该技术可以在不需要…

    Java 2023年6月15日
    00
  • Windows系统中Java调用cmd命令及执行exe程序的方法

    下面我将为您详细讲解“Windows系统中Java调用cmd命令及执行exe程序的方法”的完整攻略。 1.调用cmd命令 要在Java程序中调用cmd命令,可以使用Java中的Runtime.getRuntime()方法执行系统命令。具体代码如下: Process process = Runtime.getRuntime().exec("cmd /…

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