第6章 访问权限控制 - 《Java编程思想》读书笔记

第6章 访问权限控制

6.2 Java访问权限修饰词

6.2.3 private:你无法访问

  • 可以使用private组织别人访问某个特定的构造器
class Sundae{
    private Sundae(){}
    static Sundae makeASundae(){
        return new Sundae();
    }
}

public class IceCream{
    public static void main(String[] args){
        //! Sundae x = new Sundae();
        Sundae x = Sundae.makeASundae();
    }
}
  • 如果唯一定义的构造器是private的,这个类就无法被继承了

6.2.4 protected:继承访问权限

  • protected也提供默认的包访问权限

6.3 接口和实现

  • 访问权限的控制常被称为是具体实现的隐藏
  • 封装:把数据和方法包装进类中,以及具体实现的隐藏
  • 接口和具体实现分离:可以更改所有不是public的东西,而不会破坏客户端代码

6.4 类的访问权限

  • 类的访问权限有一些限制:

    • 每个编译单元(文件)都只能有一个public类
    • public类的名称必须完全于含有该编译单元的文件名想匹配,包括大小写
    • 编译单元内也可能完全不带public类(不常用)
  • 类只能是包访问权限或public(内部类是特例)

  • 如果不希望其他人访问该类,可以把所有构造器都指定为private,但可以在static成员内部创建,由此可以实现单例模式

class Soup2{
    private Soup2(){}
    private static Soup2 ps1 = new Soup2();
    public static Soup2 access(){
        return ps1;
    }
}
  • 如果类不指定修饰符,默认为包访问权限,但包外仍可使用访问权限为public的static成员
posted @ 2021-03-01 20:11  一天到晚睡觉的鱼  阅读(63)  评论(0)    收藏  举报