Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Java 教程

Java 主页 Java 简介 Java 入门 Java 语法 Java 输出 Java 注释 Java 变量 Java 数据类型 Java 类型转换 Java 运算符 Java 字符串 Java 数学 Java 布尔值 Java If...Else Java Switch Java While 循环 Java For 循环 Java Break/Continue Java 数组

Java 方法

Java 方法 Java 方法参数 Java 方法重载 Java 作用域 Java 递归

Java 类

Java 面向对象编程 Java 类/对象 Java 类属性 Java 类方法 Java 构造函数 Java 修饰符 Java 封装 Java 包 / API Java 继承 Java 多态性 Java 内部类 Java 抽象类 Java 接口 Java 枚举 Java 用户输入 Java 日期 Java ArrayList Java LinkedList Java 列表排序 Java HashMap Java HashSet Java 迭代器 Java 包装类 Java 异常 Java 正则表达式 Java 线程 Java Lambda 表达式 Java 高级排序

Java 文件处理

Java 文件 Java 创建/写入文件 Java 读取文件 Java 删除文件

Java 操作指南

添加两个数字 统计单词数量 反转字符串 数组元素之和 将字符串转换为数组 排序数组 查找数组平均值 查找最小元素 ArrayList 循环 HashMap 循环 遍历枚举 矩形面积 偶数或奇数 正数或负数 平方根 随机数

Java 参考

Java 参考 Java 关键字 Java 字符串方法 Java 数学方法 Java 输出方法 Java 数组方法 Java ArrayList 方法 Java LinkedList 方法 Java HashMap 方法 Java Scanner 方法 Java 迭代器方法 Java 错误 & 异常

Java 示例

Java 示例 Java 编译器 Java 练习 Java 问答 Java 服务器 Java 证书


Java 修饰符


修饰符

到现在,你已经非常熟悉在几乎所有示例中都出现的 public 关键字了。

public class Main

public 关键字是一个 访问修饰符,这意味着它用于设置类、属性、方法和构造函数的访问级别。

我们将修饰符分为两组

  • 访问修饰符 - 控制访问级别
  • 非访问修饰符 - 不控制访问级别,但提供其他功能

访问修饰符

对于 ,你可以使用 public默认

修饰符 描述 尝试
public 该类可被任何其他类访问 尝试 »
default 该类只能被同一包中的类访问。 当你没有指定修饰符时,就会使用它。 你将在 包章节 中了解更多关于包的信息。 尝试 »

对于 属性、方法和构造函数,你可以使用以下任一种

修饰符 描述 尝试
public 代码可供所有类访问 尝试 »
private 代码只能在声明的类中访问 尝试 »
default 代码只能在同一包中访问。 当你没有指定修饰符时,就会使用它。 你将在 包章节 中了解更多关于包的信息。 尝试 »
protected 代码可在同一包和 子类 中访问。 你将在 继承章节 中了解更多关于子类和超类的信息。 尝试 »

非访问修饰符

对于 ,你可以使用 finalabstract

修饰符 描述 尝试
final 该类不能被其他类继承(你将在 继承章节 中了解更多关于继承的信息) 尝试 »
abstract 该类不能用于创建对象(要访问抽象类,必须从另一个类继承。 你将在 继承抽象 章节中了解更多关于继承和抽象的信息) 尝试 »

对于 属性和方法,你可以使用以下任一种

修饰符 描述
final 属性和方法不能被覆盖/修改
static 属性和方法属于类,而不是对象
abstract 只能在抽象类中使用,并且只能用于方法。 该方法没有主体,例如 abstract void run();。 主体由子类(继承自)提供。 你将在 继承抽象 章节中了解更多关于继承和抽象的信息
transient 在序列化包含它们的的对象时,属性和方法会被跳过
synchronized 方法一次只能被一个线程访问
volatile 属性的值不会在线程本地缓存,始终从“主内存”读取。


最终

如果您不想覆盖现有的属性值,请将属性声明为final

例子

public class Main {
  final int x = 10;
  final double PI = 3.14;

  public static void main(String[] args) {
    Main myObj = new Main();
    myObj.x = 50; // will generate an error: cannot assign a value to a final variable
    myObj.PI = 25; // will generate an error: cannot assign a value to a final variable
    System.out.println(myObj.x);
  }
}

自己试试 »


静态的

一个static方法意味着它可以在不创建类对象的情况下访问,这与public不同

例子

一个演示staticpublic方法之间差异的示例

public class Main {
  // Static method
  static void myStaticMethod() {
    System.out.println("Static methods can be called without creating objects");
  }

  // Public method
  public void myPublicMethod() {
    System.out.println("Public methods must be called by creating objects");
  }

  // Main method
  public static void main(String[ ] args) {
    myStaticMethod(); // Call the static method
    // myPublicMethod(); This would output an error

    Main myObj = new Main(); // Create an object of Main
    myObj.myPublicMethod(); // Call the public method
  }
}

自己试试 »


抽象的

一个abstract方法属于一个abstract类,它没有主体。主体由子类提供。

例子

// Code from filename: Main.java
// abstract class
abstract class Main {   public String fname = "John";   public int age = 24;   public abstract void study(); // abstract method } // Subclass (inherit from Main) class Student extends Main {   public int graduationYear = 2018;   public void study() { // the body of the abstract method is provided here     System.out.println("Studying all day long");   } } // End code from filename: Main.java // Code from filename: Second.java class Second {   public static void main(String[] args) {     // create an object of the Student class (which inherits attributes and methods from Main)     Student myObj = new Student();     System.out.println("Name: " + myObj.fname);     System.out.println("Age: " + myObj.age);     System.out.println("Graduation Year: " + myObj.graduationYear);     myObj.study(); // call abstract method
  } }

自己试试 »




×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.