访问修饰符:public、protected、包访问权限(无关键词/default)和private

什么是访问权限控制

      访问权限控制就是开发人员(比如写java的底层实现的人)向客户端程序员(使用java的人)指明哪些是可用的,哪些是不可用的,以控制访问权限。访问权限分为4个等级:public、protected、包访问权限(无关键词/default)和private

为什么要有访问权限控制

       初期,我们在写代码的时候,更加注意的是能不能实现这个功能。时间长了,回过头来看,我们可能会发现有更好的方式去实现那个功能,这个时候我们想要重构代码。重构就是重写,为了使代码更加具有可读性、可维护性,更容易理解。

       但一方面我们不想任何使用这个项目的人都能访问所有东西,都能对我们自己的代码随意的进行修改,另一方面我们想在修改代码的时候,对于其他使用这个项目的人来说是没有变化的,因为他们不在乎怎么实现,只在乎怎么使用。即修改底层代码时保持使用代码的方法不变,就像不同身份的人拥有不同的权力一样。于是乎java使用访问权限控制来将变化的事物于保持不变的事物区分开来。

怎么用访问权限控制

public、protected、包访问权限(无关键词/default)和private 用来修饰类、接口、方法、变量

(类和接口只能是public或无关键字,不可以是private或protected。)

下图是四个关键字分别对应的作用域 (当前类、包、子父) Y表示可以访问,N表示不能访问

1、public

public意思是公开的,它可以被所有的类访问到。

每个编译单元(一个Java源代码文件/一个.java后缀的文件)只能有零个或一个public类。

  

2、protected

protected又称继承访问权限,

当你想给继承的子类使用此成员(不能private),而不想太过公开此成员(不能public)时,使用protected。

     (但也分两种情况

                 Ⅰ、子类和父类在同一个包中,则protected的方法、变量可以被同一个包中的其他类访问。

                 Ⅱ、子类和父类不在同一个包中,即当一个新包B从包A中继承类时,子类能访问到的就只有public了。

       )

     (此外,protected也提供包访问权限,也就是说相同包内其他类也可以访问protected元素)

3、default

default即为默认,不写访问权限关键字的时候默认为此关键字,在同一包内可访问,不同包就访问不到了。

4、private

private即为私密,此关键字修饰的方法、变量只能被它所在的类访问,其他类若要进行访问,可使用public修饰的getter方法,这部分就涉及“封装”了。

3、类只能是public或无关键字,不可以是private或protected。若不希望其他人访问该类,可以将所有构造器指定为private,从而阻止其他人创建该类对象,或在该类的static成员内部创建对象(单例设计模式)

class example{
    private static example ex=new example();
    private example(){}
    
    public static example access(){
        return ex;
    }
}
//这样的情况下,我们可以进一步改进,记录下创建了多少个对象
发布了38 篇原创文章 · 获赞 6 · 访问量 1902

猜你喜欢

转载自blog.csdn.net/weixin_43827227/article/details/104901980