四种访问权限修饰符

本文详细解析了四种Java访问权限修饰符(private、default、protected、public),通过实例展示了如何在类内和不同包、子类中使用这些权限。重点讲解了不同权限的适用场景和限制。

四种访问权限修饰符

1.说明

在这里插入图片描述

2.code 举例

  • A类中不同修饰符的属性和方法

    package com.lmwei.p7.debug;
    
    public class Order {
        private int orderPrivate;
        int orderDefault;
        protected int orderProtected;
        public int orderPublic;
    
    
        private void methodPrivate() {
            orderPrivate = 1;
            orderDefault = 2;
            orderProtected = 3;
            orderPublic = 4;
    
        }
    
        void methodDefault() {
            orderPrivate = 1;
            orderDefault = 2;
            orderProtected = 3;
            orderPublic = 4;
        }
    
        protected void methodProtected() {
            orderPrivate = 1;
            orderDefault = 2;
            orderProtected = 3;
            orderPublic = 4;
        }
    
        public void methodPublic() {
            orderPrivate = 1;
            orderDefault = 2;
            orderProtected = 3;
            orderPublic = 4;
        }
    
    
    }
    
  • 在同一个包的其他类中使用A类中的属性和方法

    package com.lmwei.p7.debug;
    
    public class OrderTest {
        public static void main(String[] args) {
            Order order = new Order();
    
            order.orderDefault = 1;
            order.orderProtected = 2;
            order.orderPublic = 3;
    
            order.methodDefault();
            order.methodProtected();
            order.methodPublic();
    
            // 同一个包中的其他类,不可以调用Order类中私有的属性和方法
            order.Pervate = 5;
            order.methodPervate();
    
        }
    }
    
  • 在不同包中继承A类的子类中使用A类中的属性和方法

    package com.lmwei.p7.debug.test;
    
    import com.lmwei.p7.debug.Order;
    
    public class SubOrder extends Order {
        public void method() {
            orderProtected = 1;
            orderPublic = 2;
    
            methodProtected();
            methodPublic();
    
            // 在不同包的子类中,不能调用Order类中声明为private 和 Default 的属性和方法
            orderDefault = 3;
            orderPrivate = 4;
    
            methodDefault();
            methodprivate();
        }
    }
    
### Java类的访问权限修饰符及其作用 Java 提供了四种访问权限修饰符:`private`、`default`(默认,不显式声明)、`protected` `public`。这些修饰符控制类、接口、变量方法的可访问范围。 #### 1. `private` 修饰符 - 仅允许被定义它的类内部访问。 - 不能用于修饰类接口,只能用于类成员(变量、方法等)。 - 是最严格的访问控制级别。 #### 2. 默认(`default`)修饰符 - 当没有显式指定任何访问修饰符时,默认使用该级别。 - 允许在同一包内访问,跨包则不可访问。 - 类、接口、变量方法都可以使用默认修饰符。 #### 3. `protected` 修饰符 - 允许同一包内的类访问,同时允许不同包中的子类访问。 - 常用于希望子类能够继承但又不希望完全公开的成员。 - 适用于类成员(变量、方法),不适用于类接口。 #### 4. `public` 修饰符 - 允许所有类访问,无论是否在同一包中。 - 是最宽松的访问控制级别。 - 可用于类、接口、变量方法[^2]。 #### 访问权限对比表 | 修饰符 | 同一类 | 同包 | 子类 | 不同包非子类 | 作用范围说明 | |------------|--------|------|------|---------------|--------------------------| | `private` | ✅ | ❌ | ❌ | ❌ | 仅本类内部访问 | | `default` | ✅ | ✅ | ✅ | ❌ | 同包内访问 | | `protected`| ✅ | ✅ | ✅ | ❌ | 同包子类访问 | | `public` | ✅ | ✅ | ✅ | ✅ | 所有类访问 | #### 类的访问修饰符限制 - 类的访问权限只能是 `public` 或默认(`default`),不能使用 `private` 或 `protected`。 - 一个类若被声明为 `public`,则该类可以被任何其他类访问。 - 如果一个类没有访问修饰符,则它只能被同一包中的类访问[^1]。 #### 示例代码 ```java // public类可以被任何其他类访问 public class PublicClass { public void publicMethod() { System.out.println("Public method"); } } // 默认访问权限的类只能被同包中的类访问 class DefaultClass { void defaultMethod() { System.out.println("Default method"); } } ``` #### 继承规则 - 子类继承父类成员时,不能将访问权限设置得比父类更严格。 - 例如,父类中声明为 `protected` 的方法,在子类中可以声明为 `protected` 或 `public`,但不能改为 `private`。 - `private` 成员无法被继承,因此不涉及权限调整问题[^2]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值