我是靠谱客的博主 干净煎饼,最近开发中收集的这篇文章主要介绍java访问控制权限 区分与理解(public、protected、default、private)访问权限控制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

访问权限控制

包:库单元

作用:

独一无二的包名

访问权限

扩展命名空间

java访问修饰符

缺省(包访问权限):不写任何访问修饰词,默认为包内(有时也可以表示为friendly)

public(接口访问权限):公共的,修饰的成员对每个人都是可用的

private(你无法访问):除包含该成员的类之外,其他的任何类都无妨访问这个成员,尤其在多线程中体现的十分重要

protected(集成访问权限):除了具备包内访问权限外,还可以被继承该类其他包内的类访问

各权限如表所示
在这里插入图片描述
一般情况下,可能会采用一种public程序置于开头,后面接着protected、包内访问权限、private成员的创建类型形式。

注明:private能够阻止任何人创建和访问该类,但是有一个例外,就是你在该类的static成员内部可以创建

Class Sounl {
    private Soup1(){}
    public static Soup1 makeSoup(){
        return new Soup1();
    }
}
Class Soup2{
    private static Soup2 ps1 = new Soup2();
    public static Soup2 access(){
        return ps1;
    }
    public void f(){}
} 

测试程序:

public class Lunch{
    void testPrivate(){
        Soup1 s1 = new Soup1();
        //编译错误,因为Soup1类中的构造方法是private
    }
    void testStatic(){
        Soup1 s2 = Soup1.makeSoup();
        //编译通过并预先
    }
    void testSingleton(){
        Soup2.access.f();
        //编译通过并运行
    }
}

到目前为止,绝大多数方法均返回void或基本类型,所以定义:

public static Soup1 makeSoup(){
    return new Soup1();
}

小结

无论在什么关系中,设立一些为各成员所遵守的界限是很重要的,不然不具备多个空间将可能出现更多的命名冲突,引发而外的开销。

控制队成员的访问权限有两个原因:

第一是为了使用户不要碰触那些们不该碰触的部分,这些部分对于类内部的操作是必要的,但是它并不属于客户端程序员所需接口的一部分。因此,将方法和域指定成 private,对客户端程序员而言是一种服务。因为这样他们可以很清楚地看到什么对它们重要,什么是可以忽略的,从而简化对类的理解。

第二个原因,也是最重要的原因,是为了让类库设计者可以更改类的内部工作方式,而不必担心这样会对客户端程序员产生重大的影响。例如,最初可能会以某种方式创建一个类,然后发现如果更改程序结构,可以大大提高运行速度。如果接口和实现可以被明确地隔离和加以保护,那么就可以实现这一目的,而不必强制客户端程序员重新编写代码。访问权限控制可以确保不会有任何客户端程序员依赖于某个类的底层实现的任何部分。

最后

以上就是干净煎饼为你收集整理的java访问控制权限 区分与理解(public、protected、default、private)访问权限控制的全部内容,希望文章能够帮你解决java访问控制权限 区分与理解(public、protected、default、private)访问权限控制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部