Java中的private、default、protected、public关键字

private、default、protected、public是Java中的访问限定修饰符,用于限制java类、方法和成员变量可见范围。

1. public 的可见范围最广

被public修饰的类、变量和方法可以被所有的类访问。适用于一些对外提供的方法和类。

2、defalut 默认访问访问

如果一个类没有使用任何访问范围修饰符,相当于使用了default修饰符,这个类只能被同一包下的类访问。

适用于一些供本包访问设计的类和方法。

3、protected 受保护的访问范围

protected是用来保护子类的,子类可以访问用它修饰的成员,相当于传递给子类的一种继承的东西。另外,同包下的其他类也可以访问它修饰的变量。

4、private 可见范围最小

体现的是封装的思想,被private修饰的对象只能在同一类个中访问,因此,一些需要受保护的成员变量使用private做封装。

四种修饰符的可见范围
类内部同一包中子类外部包
public
default××
protectded×
private×××

来个例子验证一下

写一个User.class,验证四种使用不同的修饰符下callName方法的访问范围

public class User {
    private String name;

    public User(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void callName1(String name) {
        System.out.println("我的名字是:"+name);
    }

    void callName2(String name) {
        System.out.println("我的名字是:"+name);
    }

    protected void callName3(String name) {
        System.out.println("我的名字是:"+name);
    }

    private void callName4(String name) {
        System.out.println("我的名字是:"+name);
    }
}

 如下图,通过在User.class中的main访问User的callNam方法,通过idea的提示可以看到 四种不同访问控制修饰符修饰的callName方法都有权访问。

在相同包下创建Access.class访问User的callName方法,如图所示,通过idea提示看到只有3个callName方法有权限访问,分别对应于public、default和protected修饰的callName方法。

如图,另一个包中创建Access.clss,访问User的CallName方法,只能访问public修饰的callName1方法,其他修饰符修饰的方法在不同包中都没有访问权限。

最后,在看看User的子类有哪些callName方法。

创建一个VipUser.class类,这个类继承于User,在VipUser内部访问时有两个callName方法,分别对应于public、protected修饰的方法,而在VipUser外部访问的时候不能访问protected修饰的方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值