Java中修饰类的关键字

Java中修饰类的关键字

在web编程课上,老师提问了Java中各种修饰类的关键字的用途和区别,一时间我头脑空白,现在课后重新梳理一遍Java中修饰类的各种关键字的区别和用法。在Java编程中,修饰类的关键字起着至关重要的作用,它们能够控制类的访问权限、行为特性以及继承关系等。本文将详细介绍Java中修饰类的各种关键字,包括publicprivateprotectedabstractfinalstatic等,并通过代码示例进行说明。

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();
    }
}

总结与思考

总结

  • 访问修饰符publicprivateprotected控制类的访问权限,从大到小依次为public > protected > private
  • 抽象与最终abstract用于定义抽象类,不能实例化,提供抽象方法供子类实现;final用于定义最终类,不能被继承。
  • 静态内部类static修饰的内部类不依赖于外部类的实例,可以直接通过外部类名访问。

思考

在实际编程中,合理使用这些修饰类的关键字可以提高代码的安全性、可维护性和可扩展性。例如,使用final类可以避免类被意外继承和修改,使用abstract类可以实现代码的复用和多态性。同时,正确使用访问修饰符可以控制类的访问权限,保护类的内部数据和方法不被外部随意访问。

相关推荐
郝学胜-神的一滴9 小时前
算法实战:最小k个数——大顶堆的优雅解法
开发语言·数据结构·c++·python·程序人生·算法·排序算法
bksczm9 小时前
linux之线程概念和控制
linux·开发语言·c++
掘金_答案9 小时前
上线那天,一个 ConcurrentHashMap 差点送走我的 AI 客服——3 天排查 JVM 血泪史
java·后端·架构
JackieZhengChina9 小时前
零依赖轻量级JS悬浮提示插件title2tip-js的使用教程
开发语言·javascript·ecmascript
hehelm9 小时前
Linux网络编程—TCP字典翻译系统
linux·开发语言·网络·c++·tcp/ip
MindUp9 小时前
企业网盘权限模型解析:多层级访问控制与审计能力选型指南
java·linux·运维
NG47710 小时前
【软件设计与体系结构】-策略设计模式
java·设计模式·软件工程
程序员天天困10 小时前
优雅记录操作日志:从注解到 SpEL 的全链路实践与开源方案对比
java·后端
战血石LoveYY10 小时前
Integer类型超限,导致数据异常
java·算法
李永奉10 小时前
杰理可视化SDK开发-【BUG】配置“TWS两边同时按消息使能”功能后,按键单击功能无效失灵
开发语言·单片机·嵌入式硬件·物联网·bug