zoukankan      html  css  js  c++  java
  • 《Java编程思想》笔记 第六章 访问权限控制

    1.编译单元

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

    2. 包:库单元

    1. 默认访问权限即包访问权限,同一包下可访问(指同一目录下各个.java文件中的包访问权限类或者类成员可相互访问)。
    2. 父,子目录不属于同一包(其实没有什么父子目录,包名都是唯一的)。
    3.  包可以看成类的集合,里面有public类 也有默认权限类,所以同一包下2个.java文件中不能有类同名
    4. 要使用其他包中的类 需要导包 import
    5. 静态导入 impor static.... classname.*   这样该类中的所有静态方法就可以直接调用而不用使用类名调用。*也可以换成具体的一个静态方法。
    6. 静态导入 impor static 同样可以导入ENUM类的枚举元素而不用类名调用。

    3.权限从大到小

    •  public   protected   包访问权限   private
    1.  public 接口访问权限
    2.  protected 继承访问权限和包访问权限,无public权限。
    3. private 无法访问 只有该private成员所在的类能访问。
    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;
        }
    }
  • 相关阅读:
    Python笔记 —— 使用open打开和操作txt文件
    Python笔记 —— 文件路径
    Python笔记 —— 四种容器(列表,元组,字典,集合)
    C++笔记 —— 异常
    C++笔记 —— map常用方法
    C++笔记 —— 在模板类中重载操作符
    C++笔记 —— vector常用方法
    C++笔记 —— 强制类型转换
    TCP连接三次握手四次挥手
    HashMap中自定义对象key,实现hashcode与equal
  • 原文地址:https://www.cnblogs.com/mibloom/p/9040368.html
Copyright © 2011-2022 走看看