Java编程思想笔记6——第六章:访问控制权限

6、访问控制权限

​ 通过Java提供访问权限修饰词,以供类库开发人员向客户端程序员指明哪些时可用的,哪些是不可用的。

​ 权限从大到小依次为:

​ (1)public

​ (2)protect

​ (3)包访问权限(没有关键词)

​ (4)private

6.1 包:库单元

​ 包中有很多的类,这些类属于同一名字空间。

​ 例如:java.util是名字空间,java.util中有ArrayList的类。


java.util.ArrayList list = new java.util.ArrayList();

​ 这样会显得冗长,所以可以使用import关键字

import java.util.ArrayList;

class ...
    main ...
    	ArrayList list = new ArrayList();

导入包中所有的类

import java.util.*;

每一个Java源代码都称为一个编译单元(转译单元)。每个编译单元的后缀为java。

每个编译单元可以有public类,但是类名一定要和文件的名称相同,每个编译单元只有一个public类。

6.1.1 代码组织

​ 编译.java文件时会出现同名的.class文件。

​ 一组Java文件可以打包为jar文件。

​ 类库是一组类文件。每个文件都有一个public类,以及任意数量的非public类。类库的关键字package

​ 使用package语句,必须在除了注释外的第一行

package access

​ 通过package表明该编译单元是access类库的一部分。

6.1.2 创建独一无二的包名

​ 为了解决包名重复的问题,一般来说就是将域名倒过来写。

Java解释器的运行过程

(1)找出环境变量CLASSPATH。 CLASSPATH包含一个或者多个目录,作为查找class文件的根目录。

(2)将这些根目录相连接,得到相关联的class文件

6.1.3 定制工具库

​ 重新写Print

package net.mindview.util;
import java.io.*;

public class Print{
    public static void print(Object obj){
        System.out.println(obj);
    }
    public static void print(){
        System.out.println();
    }
    public static void printnb(Object obj){
        System.out.print(obj);
    }
}

6.1.4 用import改变行为

​ Java中没有条件编译功能。

6.1.5 对使用包的忠告

​ 务必记住,无论何时创建包,都已经在给定包的名称时隐含了指定的目录结构。

6.2 Java访问权限修饰词

​ public、protected、private需要指定在属性和方法之前。

​ 如果默认指定,则默认为包访问权限。

6.2.1 包访问权限

​ 不写任何关键字时默认为包访问权限。

​ 包访问权限允许彼此之间可以相互作用。

想要让其他包能够访问本包里的方法

(1) 使该成员成为public

(2)将其放在通过一包里

(3)使用继承技术,可以访问protected以上的数据

(4)使用get/set方法

默认包:如果你没有package指定包名,那么就都在默认包中,在默认包中的数据可以是可以相互访问的。

6.2.2 public:接口访问权限

​ 使用关键字public,即对所有的包都是可用的。

​ 如果你的CLASSPATH中没有.(点)。那么就意味着java编译器不会从当前文件夹开始寻找,这就会造成错误。

6.2.3 private:你无法访问

​ 只能在类内部访问。

​ 在多线程中,private非常的重要。

私有构造方法

class Sundae{
    private Sundae(){}
    static Sundae makeSundae(){
        return new Sundae();
    }
}
public class Test{
    public static void main(String[] args){
        Sundae x = new Sundae();//报错
        Sundae x = Sundae.makeSundae();//可以执行
    }
}

通过私有构造方法,使得用户不能new对象,只能通过特定的方法获取对象。

6.2.4 protected:继承访问权限

​ 本包 和 其他包的子类可以访问

6.3 接口和实现

​ 把数据和方法包装进类中,以及具体实现的隐藏,常共同被称作是封装

​ 接口是不能实现的,就像一个纲领性文件,它只规定了原则性要求,并没有强调具体的实现。

​ 使用接口的类,都需要具体实现这些原则性要求。

6.4 类的访问权限

​ 如果要让这个类能够在包外访问,那么就需要声明public

关于public的限制

(1)每个编译单元(java文件)只能有一个public类

(2)public类的名字必须和编译单元(java文件)的名字一样

(3)每个编译单元(java文件)可以没有public类

6.5 总结

​ 控制对成员的访问权限的原因

(1)使用户不要碰到那些不该碰到的部分

(2)为了让类库设计者可以更改类的内部工作方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值