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

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个不同对象

[email protected]
[email protected]

9.单例

class Test {
    private Test() {};

    private static Test t1 = new Test(); //只创建一个对象

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

.

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

时间: 2024-10-05 05:32:32

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

Thinking In Java笔记(第六章 访问权限控制)

第六章 访问权限控制 简介 Java提供了访问权限修饰词,供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的.访问权限控制的等级,从最大权限到最小权限一次为:public.protected.包(library)访问权限(没有关键词)以及private. 6.1 包(library):库单元 包内含有一组类,它们在单一的名字控件之下被组织在一起.例如,在Java的标准发布中有一个工具库,它被组织在java.util名字空间之下.java.util中有一个叫ArrayList的类,使用A

重新精读《Java 编程思想》系列之类的访问权限

Java 中,我们用访问权限修饰词确定库中的哪些类对于使用者是可以使用的. 访问权限修饰词有 public,protected,private 和什么都不写. 那么对于类来说,我们只可以用 public 和什么都不写两种. protected 和 private 是不可以直接修饰类的. 我们在编译器中进行尝试.发现两种都是会提示报错的.说明是不可行的. 而我们使用 public 和不写修饰词是可以通过编译的. 弄清楚了什么可以修饰,什么不可以修饰之后,我们再来详细分别探究一下 public 和

java 编程思想笔记(六)——内部类

1.定义   一个类的定义放在另一个类的内部,这个类就叫做内部类. 2.链接到外围类   创建了内部类对象时,它会与创造它的外围对象有了某种联系,于是能访问外围类的所有成员,不需任何特殊条件. 那么,它是如何实现的呢?   是这样的,用外围类创建内部类对象时,此内部类对象会秘密的捕获一个指向外围类的引用,于是,可以通过这个引用来访问外围类的成员. 通常,这些都是编译器来处理,我们看不到,也不用关心这个. 正是因为如此,我们创建内部类对象时,必须与外围类对象相关联. 3.使用关键字.this与.n

java编程思想笔记(第一章)

Alan Kay 第一个定义了面向对象的语言 1.万物皆对象 2.程序是对象的集合,他们彼此通过发送消息来调用对方. 3.每个对象都拥有由其他对象所构成的存储 4.每个对象都拥有其类型(TYpe) 5.某一特定类型的所有对象都可以接收同样的消息. Booch提出一种更简洁的描述: 对象拥有状态(state) 行为(behavior) 和标识(identity) 每个对象都有一个接口 每个对象都属于定义了特性和行为的某个类(特性可以理解为属性的状态,行为可以理解为method) 在面向对象的程序设

Java编程思想笔记(第二章)

第二章  一切都是对象 尽管Java是基于C++的,但相比之下,Java是一种更纯粹的面向对象程序设计语言. c++和Java都是杂合型语言(hybird language) 用引用(reference)操作对象 类似遥控器(引用)来操作电视(对象) 在Java中你可以创建一个引用,但是没有与任何对象关联,比如: String s; 这个时候如果用则会报错.安全的做法是: 创建一个引用的同时并进行初始化 String s="1111"; 必须由你创建所有对象 New关键字的意思是给我一

Java编程思想:第6章 访问权限控制

访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关. 很多时候我们需要重构代码使之更可读,更易理解,更具维护性,但是又不能影响到客户端程序员的正常使用.我们根本不知道客户端程序员使用了哪些东西(方法),所以我们也不知道哪些东西可以改,为了解决这个问题,java提供了访问权限修饰词.访问修饰词加上包结构使得构件的捆绑和使用机制非常完善,不产生冲突. 6.1 包:库单元 用包来分隔管理不同的类. 不同包下的类需要导入,就是为了提供一个管理名字空间的机制.package 和 import就是为了解

Java编程思想(六、访问权限控制)

访问控制(或隐藏具体实现)与"最初的实现并不恰当"有关.便于未来重构代码,而不必对业务层做过多的改变.因此,Java提供了访问控制修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的. 访问控制的等级,从最大权限到最小权限依次为:public.protected.包访问权限(没有关键词).和private. 1.包:类库单元.包内含有一组类,它们在单一的名字空间之下被组织在了一起.比如,在Java的标准发布中有一个工具库.它被组织在java.util名字空间之下.ja

《Java编程思想》第十三章 字符串

<Java编程思想>读书笔记 1.String作为方法的参数时,会复制一份引用,而该引用所指的对象其实一直待在单一的物理位置,从未动过. 2.显式地创建StringBuilder允许预先为他指定大小.如果知道字符串多长,可以预先指定StringBuilder的大小避免多次重新分配的冲突. 1 /** 2 * @author zlz099: 3 * @version 创建时间:2017年9月1日 下午4:03:59 4 */ 5 public class UsingStringBuilder {

《Java编程思想》第一二章

前段时间一直通过网络教程学习Java基础,把面向对象部分学完之后本来打算继续深入学习,但是感觉自己操之过急了,基础根本不够扎实,所以入手了一本<Java编程思想>,希望先把基础打好,再深入学习. 不得不说这本书真的不是浪得虚名,对于我这样的新手看完一二章之后也觉得这本书值得买了.跟网上教程不同,这本书一开始便直接全面深入论述Java面向对象编程中对对象的理解,值得注意的是如果之前没有Java编程的基础,第一章看起来会比较吃力,而且效果也不太好,因为都是理论没有使用代码进行演示说明,所以作者也支