手册
目录
前言:
在本教程中,您将学习如何使用Java修饰符,修饰符现在,您已经非常熟悉我们几乎所有示例中出现的public关键字:publicclassMyClasspublic关键字是一个访问修饰符,这意味着它用于设置类、属性、方法和构造函数的访问级别。
现在,您已经非常熟悉我们几乎所有示例中出现的public关键字:
public class MyClass
public 关键字是一个访问修饰符,这意味着它用于设置类、属性、方法和构造函数的访问级别。
我们将修饰符分为两组:
对于 classes,可以使用 public 或 default:
| 修饰符 | 描述 | 试一试 |
|---|---|---|
public |
该类可由任何其他类访问 | 试一试 » |
| default | 该类只能由同一包中的类访问。在不指定修改器时使用此选项。您将在" Packages"一章中了解有关软件包的更多信息 | 试一试 » |
对于属性、方法和构造函数,可以使用以下选项之一:
| 修饰符 | 描述 | 试一试 |
|---|---|---|
public |
所有类都可以访问该代码 | |
private |
代码只能在声明的类中访问 | 试一试 » |
| default | 该类只能由同一包中的类访问。在不指定修改器时使用此选项。您将在" Packages"一章中了解有关软件包的更多信息 | 试一试 » |
protected |
代码可以在相同的包和子类中访问。在 继承一章中,您将了解有关子类和超类的更多信息 | 试一试 » |
对于类,可以使用final 或 abstract:
| 修饰符 | 描述 | 试一试 |
|---|---|---|
final |
该类不能被其他类继承(您将在 继承一章中了解有关继承的更多信息) | 试一试 » |
abstract |
该类不能用于创建对象(要访问抽象类,它必须从另一个类继承。您将在 继承和抽象章节中了解有关继承和抽象的更多信息) |
对于属性和方法,可以使用以下选项之一:
| 修饰符 | 描述 |
|---|---|
final |
无法覆盖/修改属性和方法 |
static |
属性和方法属于类,而不是对象 |
abstract |
只能在抽象类中使用,并且只能在方法上使用。该方法没有主体,例如抽象abstract void run();。主体由子类(继承自)提供。 在继承和抽象章节中,您将了解有关继承和抽象的更多信息 |
transient |
序列化包含属性和方法的对象时,将跳过属性和方法 |
synchronized |
方法一次只能由一个线程访问 |
volatile |
属性值不是本地缓存的线程,总是从"主内存"中读取 |
如果不希望覆盖现有属性值,请将属性声明为 final:
public class MyClass {
final int x = 10;
final double PI = 3.14;
public static void main(String[] args) {
MyClass myObj = new MyClass();
myObj.x = 50; // 将产生错误:无法为 final 变量赋值
myObj.PI = 25; // 将产生错误:无法为 final 变量赋值
System.out.println(myObj.x);
}
}
点击 "运行实例" 按钮查看在线实例
static 静态方法意味着可以在不创建类对象的情况下访问它,这与public不同:
演示static 和 public方法之间差异的示例:
public class MyClass {
// 静态方法
static void myStaticMethod() {
System.out.println("Static methods can be called without creating objects");
}
// 公共方法
public void myPublicMethod() {
System.out.println("Public methods must be called by creating objects");
}
// Main 方法
public static void main(String[ ] args) {
myStaticMethod(); // 调用静态方法
// myPublicMethod(); 这将输出错误
MyClass myObj = new MyClass(); // 创建一个 MyClass 的对象
myObj.myPublicMethod(); // 调用公共方法
}
}
点击 "运行实例" 按钮查看在线实例
abstract 抽象方法属于abstract抽象类,它没有主体。主体由子类提供:
// Code from filename: Person.java // 抽象类
abstract class Person { public String fname = "John"; public int age = 24; public abstract void study(); // 抽象方法 } // 子类(从 Person 继承) class Student extends Person { public int graduationYear = 2018; public void study() { // 此处提供了抽象方法的主体 System.out.println("Studying all day long"); } } // End code from filename: Person.java // Code from filename: MyClass.java class MyClass { public static void main(String[] args) { // 创建 Student 类的对象(从 Person 继承属性和方法) 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(); // 调用抽象方法
} }
相关
视频
RELATED VIDEOS
科技资讯
1
2
3
4
5
6
7
8
9
精选课程
共5课时
17.2万人学习
共49课时
77万人学习
共29课时
61.7万人学习
共25课时
39.3万人学习
共43课时
71万人学习
共25课时
61.6万人学习
共22课时
23万人学习
共28课时
33.9万人学习
共89课时
125万人学习