Java中修饰类的关键字
在web编程课上,老师提问了Java中各种修饰类的关键字的用途和区别,一时间我头脑空白,现在课后重新梳理一遍Java中修饰类的各种关键字的区别和用法。在Java编程中,修饰类的关键字起着至关重要的作用,它们能够控制类的访问权限、行为特性以及继承关系等。本文将详细介绍Java中修饰类的各种关键字,包括public
、private
、protected
、abstract
、final
、static
等,并通过代码示例进行说明。
1. public
关键字
作用
public
关键字是访问修饰符中权限最大的一种,使用public
修饰的类可以被任何其他类访问,无论这些类位于哪个包中。
代码示例
java
// 定义一个public类
public class PublicClass {
public void display() {
System.out.println("This is a public class.");
}
}
// 在另一个类中访问PublicClass
class Main {
public static void main(String[] args) {
PublicClass publicClass = new PublicClass();
publicClass.display();
}
}
2. private
关键字
作用
private
关键字是访问修饰符中权限最小的一种,使用private
修饰的类只能在其所在的类内部被访问,通常用于内部类。
java
public class PublicClass {
public void display() {
System.out.println("This is a public class.");
}
private void run(){
System.out.println("test");
}
}
若在主类中用run方法会报错:
3. protected
关键字
作用
protected
关键字修饰的类可以被同一个包中的其他类访问,也可以被不同包中的子类访问。
代码示例
java
// 定义一个protected类
class ProtectedClass {
protected void display() {
System.out.println("This is a protected class.");
}
}
// 同一个包中的类访问ProtectedClass
class SamePackageClass {
public static void main(String[] args) {
ProtectedClass protectedClass = new ProtectedClass();
protectedClass.display();
}
}
// 不同包中的子类访问ProtectedClass
class SubClass extends ProtectedClass {
public void test() {
display();
}
}
4. abstract
关键字
作用
abstract
关键字用于定义抽象类,抽象类不能被实例化,它主要用于作为其他类的基类,提供一些通用的方法和属性。抽象类中可以包含抽象方法,抽象方法只有声明,没有实现,需要子类来实现。
代码示例
java
abstract class Animals {
// 抽象方法,子类必须实现
public abstract void makeSound();
public abstract void makeSound(String sound);
// 具体方法,子类可直接使用
public void eat() {
System.out.println("Animal is eating.");
}
}
子类继承如下图所示:

5. final
关键字
作用
final
关键字用于修饰类时,表示该类不能被继承,即它是最终类。使用final
修饰的类通常是一些不需要被扩展的工具类。
代码示例
java
// 定义一个final类
final class FinalClass {
public void display() {
System.out.println("This is a final class.");
}
}
// 尝试继承final类会导致编译错误
// class SubFinalClass extends FinalClass { }
class Main {
public static void main(String[] args) {
FinalClass finalClass = new FinalClass();
finalClass.display();
}
}

6. static
关键字
作用
static
关键字用于修饰内部类时,表示该内部类是静态内部类。静态内部类不依赖于外部类的实例,可以直接通过外部类名来访问。
代码示例
java
class Outer {
// 定义一个静态内部类
static class StaticInnerClass {
public void display() {
System.out.println("This is a static inner class.");
}
}
}
class Main {
public static void main(String[] args) {
// 直接通过外部类名访问静态内部类
Outer.StaticInnerClass staticInnerClass = new Outer.StaticInnerClass();
staticInnerClass.display();
}
}
总结与思考
总结
- 访问修饰符 :
public
、private
、protected
控制类的访问权限,从大到小依次为public
>protected
>private
。 - 抽象与最终 :
abstract
用于定义抽象类,不能实例化,提供抽象方法供子类实现;final
用于定义最终类,不能被继承。 - 静态内部类 :
static
修饰的内部类不依赖于外部类的实例,可以直接通过外部类名访问。
思考
在实际编程中,合理使用这些修饰类的关键字可以提高代码的安全性、可维护性和可扩展性。例如,使用final
类可以避免类被意外继承和修改,使用abstract
类可以实现代码的复用和多态性。同时,正确使用访问修饰符可以控制类的访问权限,保护类的内部数据和方法不被外部随意访问。