《java编程思想》_第六章_访问权限控制

访问权限控制的等级,从最大权限到最小权限依次为:public、protected、包访问权限和private。以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的。

一、包:库单元

    当编写一个java源代码文件时,此文件通常被称为编译单元,每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同。每个编译单元只能有一个public类,否则编译器不会接受。

    1.代码组织

    package和import关键字允许你做的,是将单一的全局名字空间分隔开,使得无论多少人使用internet以及java开始编写类,都不会出现名称冲突的问题。package语句必须是文件中的第一行非注释程序代码。

    2.创建独一无二的包名

    怎样创建独一无二的额名称以及怎样查找有可能隐藏于目录结构中某处的类,这些任务是通过将.class文件所在的路径位置编码成package名称来实现的。

    3.定制工具库

    我们可以创建自己的工具库来减少或消除重复的程序代码,这样,我们在使用工具时,可以用一个更具可读性的静态import语句来导入。


二、java访问权限修饰词

    1.包访问权限

    如果不提供任何访问权限修饰词,则意味着它是“包访问权限”。包访问权限允许将包内所有相关的类组合起来,以使它们彼此之间可以轻松地相互作用。当把类组织起来放进一个包内时,也就是给它们的包访问权限的成员赋予了相互访问的权限。

    2.public:接口访问权限

    使用关键字public,就意味着public之后紧跟的成员声明自己对每个人都是可用的。尤其是使用类库的客户端成员更是如此。

    3.private:你无法访问

    private的意思是,除了包含该成员的类之外,其他任何类型都无法访问这个成员。这对于类中的private域同样适用,除非必须公开底层实现细目,否则就应该将所有的域指定为private。

    4.protected:继承访问权限

    protected也提供包访问权限,也就是说,相同包内的其他类可以访问protected。


三、接口和实现

    访问权限的控制常被称为是具体实现的隐藏,把数据和方法包装进类中,以及具体实现的隐藏,常共同被称作是封装。


四、类的访问权限

       在java中,访问权限修饰词也可以用于确定库中的哪些类对于该库的使用者是可用的。然而有一些额外的限制。

    (1)每个编译单元都只能有一个public类

    (2)public类的名称必须完全与含有该编译单元的文件名相匹配,包括大小写

    (3)虽然不是很常用,但编译单元完全不带public类也是可能的

    请注意,类既不可以是private的,也不可以是protected的。所以对于类的访问权限,仅有两个选择:包访问权限或public。如果不希望其他任何人对该类拥有访问权限,可以把所有的构造器都制定为private,从而阻止任何人创建该对象,但有一个例外,就是在该类的static成员内部可以创建。例如:

public class Test002 {
	private Test002(){}
	public static Test002 getTs(){
		return new Test002();
	}
	public void print(){
		System.out.println("成功调用");
	}

}
public class Test001 {
	
	public static void main(String[] args){
		//Test002 ts1 = new Test002();//这一行编译器会报错,因为构造方法属于private
		Test002 ts =Test002.getTs();
		ts.print();
	}
}

运行结果:成功调用


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值