码迷,mamicode.com
首页 > 编程语言 > 详细

《Java编程思想》笔记 第六章 访问权限控制

时间:2018-05-15 12:42:42      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:rgs   pki   导包   3.2   不同   style   stat   protected   外部   

1.编译单元

  • 一个 编译单元即 .java 文件 内只能有一个 public 类  且该文件名必须与public 类名 完全一致。
  • 编译单元内也可以没有public类 文件名可随意。

2. 包:库单元

2.1 默认访问权限即包访问权限,同一包下可访问(指同一目录下各个.java文件中的包访问权限类或者类成员可相互访问)。

2.2 父,子目录不属于同一包(其实没有什么父子目录,包名都是唯一的)。

2.3 包可以看成类的集合,里面有public类 也有默认权限类,所以同一包下2个.java文件中不能有类同名。

2.4 要使用其他包中的类 需要导包 import

3.权限从大到小

  •  public   protected   包访问权限   private

3.1 public 接口访问权限

3.2 protected 继承访问权限和包访问权限,无public权限。

3.3 private 无法访问 只有该private成员所在的类能访问。

3.4 把所有构造器设为private可以阻止类之外通过new创建对象。

4.类的权限

  • 类只有public和默认包权限,内部类可以有protected和private权限。

5.访问权限控制也叫具体实现的隐藏

6.封装

  •  把数据和方法包装进类中,以及具体实现的隐藏。

7.类的访问权限

  • 对于一个类来说其内部成员相互没有什么权限,并且调用方法不需要对象和this 
class Test {
    private void f() {
        
    };

    void g() {
        
        f();
    };
}

 

8.private构造器 外部不能产生该类对象 

  • private构造器 外部不能产生Test对象 但可以通过其类内部的静态方法返回该类对象,这样外部就可以创建Test对象了
public class ClassRe {

    public static void main(String[] args) {
        Test p1 = Test.make(),
             p2 = Test.make();
        System.out.println(p1);
        System.out.println(p2);

    }

}

class Test {
    private Test() {};

    static Test make() {

        return new Test();
    }
}

 

从输出看创建了2个不同对象

lpkiebfe.Test@62efae3b
lpkiebfe.Test@6597d63b

9.单例

class Test {
    private Test() {};

    private static Test t1 = new Test(); //只创建一个对象
    
    public static Test access(){  //外部只能通过调用该方法创建Test对象
        return t1;
    }
}

 

.

《Java编程思想》笔记 第六章 访问权限控制

标签:rgs   pki   导包   3.2   不同   style   stat   protected   外部   

原文地址:https://www.cnblogs.com/mibloom/p/9040368.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!