三分钟让你明白Java访问修饰限定符

dc04ad2d5c5ed556fc5f4e3ecb917bb.png
Man!今天我单独将访问修饰限定符拿出来进行梳理,包你三分钟学会!想一步到位的可以直接看总结!
首先我们要知道哪些是访问修饰限定符,我们直接上图:
image.png
注意嗷,这里的No是序号的意思,不是不行的意思!!
看到这个表,最好记住的就是private和public,private的英文翻译就是私有的,被它修饰的变量或方法只能在同一个包的同一个类中调用,public的英文翻译是公共的,那就是被它修饰的不论在哪里都可以调用,当然——要符合基本的语法逻辑和语法范围。
其次就是我们的default,诶,是不是很熟悉,我们在最开始学习分支语序——switch的时候是不是在结尾的时候会有一个default?没错,就是它,今天我们讲的就是它在Java中的第二个用法——包访问权限。但是大家有没有发现,我们在修饰变量或者方法的时候,好像没有看到过default。那是因为如果一个类、方法或变量没有使用 **public****protected**** 或 **private** 修饰符,那么它具有包访问权限**(也称为默认访问权限),换句话说,包访问权限**通过不使用任何访问修饰符来实现,**所以我们不用单独地去写default,只需要知道有这么个东西存在就行。
比较复杂的就是我们的protected了:

package mypackage;

public class ParentClass {
    protected int protectedVar = 10;

    protected void protectedMethod() {
        System.out.println("This is a protected method.");
    }
}

class SamePackageClass {
    public void accessProtected() {
        ParentClass obj = new ParentClass();
        System.out.println(obj.protectedVar); // 可以访问 protectedVar
        obj.protectedMethod(); // 可以调用 protectedMethod
    }
}
package anotherpackage;

import mypackage.ParentClass;

public class ChildClass extends ParentClass {
    public void accessProtected() {
        System.out.println(protectedVar); // 可以访问 protectedVar
        protectedMethod(); // 可以调用 protectedMethod
    }
}

// 不同包内的非子类无法访问 protected 成员
class AnotherPackageClass {
    public void accessProtected() {
        ParentClass obj = new ParentClass();
        // System.out.println(obj.protectedVar); // 编译错误
        // obj.protectedMethod(); // 编译错误
    }
}
package anotherpackage;

import mypackage.ParentClass;

public class ChildClass extends ParentClass {
    public void accessProtected() {
        System.out.println(protectedVar); // 可以访问 protectedVar
        protectedMethod(); // 可以调用 protectedMethod
    }
}
package anotherpackage;

import mypackage.ParentClass;

class AnotherPackageClass {
    public void accessProtected() {
        ParentClass obj = new ParentClass();
        // System.out.println(obj.protectedVar); // 编译错误
        // obj.protectedMethod(); // 编译错误
    }
}
  • **protected**** 访问修饰符**:提供了一种介于 publicprivate 之间的访问级别。
  • 同一包内protected 成员可以在同一个包内的任何类中访问。
  • 不同包内protected 成员可以在不同包内的子类中访问,但不能在不同包内的非子类中访问。
  • 继承访问:子类可以访问父类的 protected 成员,即使它们在不同的包中。

总结:

  • public是Java中最开放的修饰限定符,被他修饰的变量在任何地方都可以访问。
  • private是Java中最严格的修饰限定符,只能在同一个包的类内部访问被private修饰的变量。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值