Java中常用修饰符的使用方法汇总

Java中常用修饰符的使用方法汇总

在Java中,修饰符是一种关键字,用于修饰类、变量、方法等结构的访问权限、范围等特征。本文将会详细讲解Java中常用修饰符的使用方法,帮助读者更好地理解和掌握Java编程。

访问修饰符

Java中访问修饰符包括public、protected、default和private四种,它们分别控制着变量、方法和类的访问权限。下面逐一进行说明:

public

使用public修饰的成员可以被任何其他类访问,无论这些类是否在同一个包中,即为公共访问权限。

示例:

public class Person {
    public String name;
    public void printName() {
        System.out.println("name: " + name);
    }
} 

public class Test {
    public static void main(String[] args) {
        Person xiaoming = new Person();
        xiaoming.name = "小明";
        xiaoming.printName();
    } 
} 

上述代码中,Person类中为name和printName方法均被public修饰,由于它们具有公共访问权限,因此在Test类中可以直接访问。

protected

使用protected修饰的成员可以被本类、同一个包中的其他类、以及该类的子类访问,即为受保护的访问权限。

示例:

public class Person {
    protected int age;
} 

public class Teacher extends Person {
    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }
} 

public class Test {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        teacher.setAge(30);
        System.out.println("age: " + teacher.getAge());
    } 
} 

上述代码中,Person类中的age变量被protected修饰,在Teacher类中能够通过继承来访问这个变量,并添加了setAge和getAge方法,可以在Test类中通过teacher对象访问到age变量的值。

default

使用default修饰的成员只能在同一个包中被访问,没有访问修饰符时默认为default,即为包访问权限。

示例:

package com.example;

class Person {
    String name;
    int age;

    void display() {
        System.out.println("name: " + name + ", age: " + age);
    }
} 

public class Test {
    public static void main(String[] args) {
        Person xiaoming = new Person();
        xiaoming.name = "小明";
        xiaoming.age = 18;
        xiaoming.display();
    } 
} 

上述代码中,Person类没有使用任何访问修饰符,在Test类中只有在将Person类和Test类放在同一个包中之后才能够访问到Person类中的变量和方法,即为包访问权限。

private

使用private修饰的成员只能在本类中被访问,不能被其他类访问,即为私有访问权限。

示例:

public class Person {
    private String name;
    private void printName() {
        System.out.println("name: " + name);
    }

    public void setName(String name) {
        this.name = name;
    }

    public void display() {
        printName();
    }
} 

public class Test {
    public static void main(String[] args) {
        Person xiaoming = new Person();
        xiaoming.setName("小明");
        xiaoming.display();
    } 
} 

上述代码中,Person类中的name变量和printName方法均被private修饰,只有在Person类内部才能够被访问。

非访问修饰符

除了访问修饰符外,Java中还有final、abstract、static和volatile四种非访问修饰符。

final

使用final修饰的成员不能被改变,即为不可变的。

示例:

public class Person {
    public final String name = "小明";
    public final int age = 18;
} 

public class Test {
    public static void main(String[] args) {
        Person xiaoming = new Person();
        xiaoming.name = "小红";
        xiaoming.age = 20;
        System.out.println("name: " + xiaoming.name + ", age: " + xiaoming.age);
    } 
} 

上述代码中,Person类中的name变量和age变量均被final修饰,因此不能够被改变,如果在Test类中执行对这两个变量的赋值操作,则会报错。

abstract

使用abstract修饰的类必须被继承,不能被实例化,即为抽象类。

示例:

public abstract class Animal {
    public abstract void move();
} 

public class Dog extends Animal {
    public void move() {
        System.out.println("狗会跑");
    }
} 

public class Test {
    public static void main(String[] args) {
        Animal animal = new Dog();
        animal.move();
    } 
} 

上述代码中,Animal类被声明为抽象类,并使用了abstract修饰其move方法,必须在子类中进行实现。在Test类中,先将Dog类实例化为一个Animal类型的变量animal,然后使用animal.move()方法来调用的是Dog类中实现的move方法。

static

使用static修饰的成员是静态成员,属于类本身而非对象,可以通过类名直接访问,也可以通过对象访问。

示例:

public class Person {
    private static int count = 0;
    private int id;
    private String name;

    public Person(String name) {
        this.name = name;
        this.id = ++count;
    }

    public static int getCount() {
        return count;
    }

    public void display() {
        System.out.println("id: " + id + ", name: " + name);
    }
}

public class Test {
    public static void main(String[] args) {
        Person xiaoming = new Person("小明");
        Person xiaohong = new Person("小红");
        System.out.println("count: " + Person.getCount());
        xiaoming.display();
        xiaohong.display();

    } 
} 

上述代码中,Person类中的count变量被声明为静态变量,可以使用Person.getCount()方法来获取所有Person对象的计数器,也可以通过对象调用display方法来输出每个人的id和name。

volatile

使用volatile修饰的成员具有可见性,即被volatile修饰的变量在一个线程中被修改后,在其他线程中是可见的。

示例:

public class Counter extends Thread {
    volatile int count = 0;

    public synchronized void increment() {
        count++;
    }

    public void run() {
        for (int i = 0; i < 10000; i++) {
            increment();
        }
    }
}

public class Test {
    public static void main(String[] args) {
        Counter counter1 = new Counter();
        Counter counter2 = new Counter();
        counter1.start();
        counter2.start();
        try {
            counter1.join();
            counter2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("count: " + counter1.count);
    } 
} 

上述代码中,Counter类中的count变量被声明为volatile,确保在计数线程1中修改count变量后,在计数线程2中是可见的。在Test类中,创建了两个计数线程counter1和counter2,并启动它们,最后使用counter1.count输出计数结果。

小结

通过本文的介绍,读者可以学习到Java中常用修饰符的使用方法,包括访问修饰符和非访问修饰符。在编写Java代码时,应根据具体情况选择使用不同的修饰符,合理控制访问权限,保证代码的可读性和可维护性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中常用修饰符的使用方法汇总 - Python技术站

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

相关文章

  • SpringBoot入坑笔记之spring-boot-starter-web 配置文件的使用

    SpringBoot入坑笔记之spring-boot-starter-web配置文件的使用 在Spring Boot中,我们可以使用spring-boot-starter-web依赖来快速构建Web应用程序。在本文中,我们将介绍如何使用spring-boot-starter-web依赖,并提供两个示例。 添加依赖 在pom.xml文件中添加以下依赖: &lt…

    Java 2023年5月15日
    00
  • Java入门基础之Java的基本语法与Java所支持的数据类型

    Java是一种面向对象的编程语言,为了学好Java,首先要掌握Java的基本语法和数据类型。 一、Java的基本语法 Java的基本语法包括变量、运算符、控制流程和函数等。 1. 变量 Java中的变量需要先声明然后再使用,变量必须指定类型。Java变量可以分为两类:基本类型和引用类型。 Java的基本类型有八种,分别是:byte、short、int、lon…

    Java 2023年5月23日
    00
  • 【深度思考】聊聊JDK动态代理原理

    1. 示例 首先,定义一个接口: public interface Staff { void work(); } 然后,新增一个类并实现上面的接口: public class Coder implements Staff { @Override public void work() { System.out.println(“认真写bug……”); } } …

    Java 2023年4月17日
    00
  • Java Apache Commons报错“ParserConfigurationException”的原因与解决方法

    “ParserConfigurationException”是Java的Apache Commons类库中的一个异常,通常由以下原因之一引起: 无效的配置:如果配置无效,则可能会出现此错误。在这种情况下,需要检查配置以解决此问题。 无效的输入:如果输入无效,则可能会出现此错误。在这种情况下,需要检查输入以解决此问题。 以下是两个实例: 例1 如果配置无效,则…

    Java 2023年5月5日
    00
  • spring设置拦截器代码实例

    下面我将为你详细讲解”Spring设置拦截器代码实例”的完整攻略,包括以下内容: 什么是拦截器 Spring中的拦截器 设置Spring拦截器的步骤 两个代码示例 1. 什么是拦截器 拦截器(Interceptor)是一种AOP(面向切面编程)思想的应用,它是用来处理请求的,类似于Servlet中的过滤器(Filter)。拦截器可以在一个请求时的preHan…

    Java 2023年5月19日
    00
  • 浅谈java二进制、十进制、十六进制、字符串之间的相互转换

    Java进制转换攻略 Java中提供了十进制、二进制、八进制、十六进制的进制表示,同时也支持将不同进制之间进行转换,并提供字符串和数字之间的转换方法。 十进制转换为其他进制 十进制转二进制 Java中可以使用 Integer 类的 toBinaryString 方法将十进制数转换为二进制字符串,例如: int decimalNum = 123; String…

    Java 2023年5月27日
    00
  • SpringBoot项目中的视图解析器问题(两种)

    在 Spring Boot 项目中,视图解析器是用于将逻辑视图名称解析为实际视图对象的组件。Spring Boot 支持两种类型的视图解析器:Thymeleaf 和 JSP。本文将介绍这两种视图解析器的使用方法和示例。 Thymeleaf 视图解析器 1. 什么是 Thymeleaf? Thymeleaf 是一种现代化的服务器端 Java 模板引擎,它可以处…

    Java 2023年5月18日
    00
  • Java中Mybatis分页查询的四种传参方式

    前言 在使用 Mybatis 进行分页查询时,我们需要传递分页参数给 Mybatis,以告知查询的起始位置和数量。这篇文章将会详细介绍 Java 中 Mybatis 分页查询的四种传参方式。 前置条件 在介绍 Mybatis 分页查询的传参方式之前,需要先完成如下准备工作: 导入 Mybatis 和 Mybatis-spring 的 jar 包 编写 Myb…

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