1. 包:库单元

    • 包内包含有一组类,他们在单一的名字空间下被组织在一起。
    • 通过import ***.***.*可以将某个包下的所有类导入到当前文件中。
    • 每个Java源文件最多只能有一个public类,且名称必须与文件名相同。源文件中的其他类在包外事不可见的,主要用来为public类提供支持。
    • Java的可运行程序是一组可以打包并压缩为一个Java文档文件(jar)的.class文件。
    • package 和import可以将单一的全局名字空间分割开,使得无论多少人使用Java编写类,都不会出现名称冲突问题。
    • 可以通过package创建自己的工具包,并通过import static导入静态方法。
    • 利用import可以实现选择性编译的功能。
    • Java虚拟机可以通过classpath+包名的方法寻找到.class文件的位置。
    • 包名隐含地指定了目录结构。
  2. Java访问权限修饰词
    • 包访问权限

      • 不加修饰词的为包访问权限。
      • 当前包中的所有其他类对该成员或方法都可访问,但对包外而言是私有的。
      • 由于一个.java文件只能属于一个包,因此在一个.java文件中的所有类彼此之间都可以访问。
      • 如果没有明确设置package,那么java会默认该文件夹下的.java文件都默认属于该目录的默认包,都享有包访问权限。
    • public:接口访问权限
      • public声明的成员,对每个人都是可见的。
    • private:无法访问
      • private允许创建者随意改变该成员,而不必考虑这样做是否会影响到包内其他的类。
    • protected:继承访问权限
      • protected 提供包访问权限和派生类访问权限。
  3. 接口和实现
    • 访问权限的控制被称为"具体实现的隐藏"。
    • 将数据和方法包装进类中,并将具体实现隐藏的过程称为封装
    • 访问权限控制将接口和具体实现分离。客户端程序员只能通过public方法向接口发送信息,因此类开发者可以任意修改不是public的内容。
  4. 类的访问权限
    • 每个编译单元只能有一个public类,表示只能有单一的公共接口。
    • 每个编译单元可以不存在public的类,此时文件名可以任意取。
    • 类访问权限不能是private和protected(内部类除外)。
    • 非public类内部如果存在静态public成员的话,仍然可以在外部访问该成员而不会创建对象。
  5. 总结
    • 访问权限控制的原因

      • 一是可以使客户端程序员了解到类的哪些部分对他们是有用的,哪些部分是没用的,简化他们对类的理解
      • 二是可以使类库设计者随意地更改类的内部工作方式,而不用担心对客户端程序员产生重大的影响。

初读"Thinking in Java"读书笔记之第六章 --- 访问权限控制的更多相关文章

  1. 初读"Thinking in Java"读书笔记之第七章 --- 复用类

    组合语法 将对象引用置于新类中,即形成类的组合. 引用初始化方法 在定义处初始化. 在类的构造器中初始化. 在使用这些对象之前,进行"惰性初始化". 使用实例初始化. 继承语法 J ...

  2. 初读"Thinking in Java"读书笔记之第五章 --- 初始化与清理

    用构造器确保初始化 构造器可以确保每个对象都会得到初始化,Java毁在创建对象时自动调用构造器. 构造器采用与类名相同的名称,因此并不适合"每个方法首字母小写的风格". 构造器默认 ...

  3. 初读"Thinking in Java"读书笔记之第四章 ---控制执行流程

    true和false Java不允许将数字作为布尔值使用. 所有条件表达式都将布尔值作为判断条件,决定执行路径. if-lese 迭代 while,do-while,for为三个迭代语句. ,逗号操作 ...

  4. 初读"Thinking in Java"读书笔记之第三章 --- 操作符

    更简单的打印语句 导入自己编写的静态类库,即可使用print();打印 使用Java操作符 操作符:+,-,*,/,=,==,!=,+=,?:,%等 几乎所有操作符都只能操作"基本类型&qu ...

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

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

  6. 初读"Thinking in Java"读书笔记之第二章 --- 一切都是对象

    用引用操纵对象 Java里一切都被视为对象,通过操纵对象的一个"引用"来操纵对象. 例如, 可以将遥控器视为引用,电视机视为对象. 创建一个引用,不一定需要有一个对象与之关联,但此 ...

  7. 初读"Thinking in Java"读书笔记之第九章 --- 接口

    抽象类和抽象方法 abstract void f();抽象方法是仅有声明而没有方法体的方法. 包含抽象方法的类叫做抽象类,如果一个类包含了一个抽象方法,则该类必须限定为抽象类. 抽象类和抽象方法可以使 ...

  8. 初读"Thinking in Java"读书笔记之第八章 --- 多态

    再论向上转型 在某些方法中,仅接收基类作为参数,而不是特殊的导出类,会使得程序更容易扩展. 转机 方法调用绑定 前期绑定(编译期绑定):在编译期将一个方法调用和方法主体关联起来. 后期绑定(动态绑定或 ...

  9. 关于《Java读书笔记》第六章课后习题选择题总结与疑问

    课后习题 选择题 3 题 代码: class Some{ String ToString(){ return "Some instance"; } } public class M ...

随机推荐

  1. python中模块的__all__详细使用

    python模块中的__all__,用于模块导入时限制,如:from module import * 此时被导入模块若定义了__all__属性,则只有__all__内指定的属性.方法.类可被导入:若没 ...

  2. 压测过程中使用nmon对服务器资源的监控

    1.nmon工具的下载和安装: 官网:http://nmon.sourceforge.net/pmwiki.php 下载完成后进行解压,更改权限:chmod 777 2.查看linux系统的版本,再使 ...

  3. EOJ Monthly 2019.2

    题解 A 回收卫星 #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include<bits/s ...

  4. SQL 基础学习(1):下载DB Browser for SQLite. 下载graphviz(为了使用Rails ERD的前提)出现❌,已debug.

    SQL is a standard language for storing, manipulating and retrieving data in databases. 关系型数据库:RDBMS( ...

  5. SSM框架中如何简便上传文件表单

    此种方式上传文件相对简单,以下均经测试成功,才提供到此. 以下为单个文件上传方式 分析:本次的工作目的是根据一级标题产生对应的二级标题,在每个二级标题下对应一个(file字段)新闻文件,当点击新闻文件 ...

  6. orace如何创建函数并调用

    我们来定义一个oracle的函数 create or replace function 方法名(参数名1 参数类型,参数名2 参数类型,参数名3 参数类型)return 返回类型 is num_C n ...

  7. CentOS7+Win10双系统的CentOS7启动bug

    自从安装了CentOS7系统,它的启动时间常常要三分钟以上,实在忍不了. 以下是CentOS7系统的启动记录片断: May 18 13:04:05 DESKTOP-23V3CHU kernel: XF ...

  8. JQ菜单滑块

    网站导航滑块效果: 复制以下代码保存到html文件中即可查看效果... <html> <head> <title>JQ菜单滑块</title> < ...

  9. ES5和ES6那些你必须知道的事儿(三)

    ES5和ES6那些你必须知道的事儿 ES6新增的东西 一.块级作用域:关键字let,常量const let与var的区别: a.不会进行变量声明提升 b.变量不允许被重复定义 c.变量不允许被删除 d ...

  10. java前的部分了解(计算机小白)

    一.加密 对称加密: des 3des AES rc4 (数据加密) 会话密钥 非对称加密(成对:公钥/私钥(一个加密一个解密)):RSA DSA 密钥交换 / 数字签名(用私钥加密摘要算法出的一串数 ...