Java中的权限修饰符(12)

Java 中的访问权限修饰符主要是用来控制类、接口、方法和变量等成员的可见性和访问范围。Java 中有四种不同的访问权限修饰符,分别是publicprotecteddefaultprivate。封装(信息隐藏)是面向对象重要的特性之一,这也是访问权限修饰符存在的目的(实现信息的隐藏)。

1.public

如果将类的成员变量或者成员方法的访问权限设置为 public,那么除了本类当中可以使用这些数据,还可以在子类和其他包的类中使用这些数据。也就是说它可以在任何一个类中,不管同不同包,任意使用方法一般使用 public 用于被调用。

  • 构造方法使用 public:方便创建对象。

//父类构造器
public father(int age){
    System.out.println(age);
}

//子类构造器
public son(int age){
    //默认是super()调用父类的无参构造器
    super(28);
    System.out.println("son:"+age);
}
  • 成员方法使用 public:方便调用方法。

2.private

如果将类的成员变量或者成员方法的访问权限设置为 private,那么该成员变量只能在本类中使用,在子类中是不可见的,并且对其他包的类也是不可见的。如果一个类的访问权限被设置为 private,那么这个类将会隐藏其内的所有数据,避免用户直接访问它。属性通常使用 private 封装起来。但是被 private 修饰的成员可以通过 set 和 get 方法向外界提供访问方式。

public class test {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

3.protected

如果将类的成员变量或者成员方法的访问权限设置为 protected,可以被同一包中的所有类和不同包中的子类访问。注意这里的不同包中的子类是严格限制的,即在不同包的子类中可以通过子类的对象访问父类的 protected 成员变量和方法,反而不能通过父类的对象访问父类的 protected 成员变量和方法。例如:

//父类
package p1;

public class People {
    protected String name;
    protected void sing(){
        System.out.println(name+"在唱歌");
    }
}
//子类
package p2;

import p1.People;

public class Student extends People {
    public void test(){
        // 在子类中直接使用People的protected成员变量和方法,可行
        name="amber";
        sing();
        People people = new People();
    }

    public static void main(String[] args) {
        Student student = new Student();
        student.test();
        System.out.println("--------------------");
//        在子类中通过子类的对象访问People的protected成员变量和方法,可行
        student.name="doris";
        student.sing();
//        在子类中通过父类的对象访问父类People的protected成员变量和方法,不行
//        people.name="tina";
//        people.sing();
    }
}

会被子类继承的方法,通常使用 protected。

4.default

defalut 即不写任何关键字,它可以修饰类,成员变量,成员方法,构造方法。被默认权限修饰后,其只能被本类以及同包下的其他类访问

5.区别总结

修饰符本类同一个包下的其他类其他包类的子类
public
protected
default
private

6.作用域最小原则

一般而言,应使变量的作用域最小化,把变量引用点尽可能集中在一起,从而能够对变量施加控制。将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性。简单点说就是如果能有 private 的就用 private,如果不满足需求就把等级扩大一级,以此类推,这样就可以把数据封装起来,有助于程序的安全性的提高。

全文完,没关注的烦请加个关注,优质内容持续更新中~

更多技术内容交流,请加入程序员桔子知识星球。

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值