一  包:库单元

假设我们存在两个类名相同的类,如果没有一定的措施对其进行区分,就会无法区别到底使用的是哪一个类。因此java引入了包来进行名字空间管理。

包(类库)包含有一组类,这些类在单一的名字空间之下被组织在了一起。例如在Java的标准发布中有一个工具库,它被组织在java.util名字空间之下。java.util中有一个叫做ArrayList的类,使用ArrayList的一种方式是用其全名java.util.ArrayList来指定。

public class FullQulification {
public static void main(String[] args) {
java.util.ArrayList list = new java.util.ArrayList();
System.out.println("测试!");
}
}

这样就会使的程序语句变长了,为此java中引入了import关键字进行了简化。

import java.util.ArrayList;
public class FullQulification {
public static void main(String[] args) {
ArrayList list = new ArrayList();
System.out.println("测试!");
}
}

假设我们自己也定义一个ArrayList类,为了和系统的ArrayList类区别开来,我们可以创建一个access.mypackage包,然后在该包下创建一个ArrayList类:

package access.mypackage;

public class ArrayList {
public String toString() {
return "ArrayList [getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString()
+ "]";
} }

如果想使用自己定义的ArrayList类,只需要import access.mypackage.ArrayList即可。

import access.mypackage.ArrayList;
public class FullQulification {
public static void main(String[] args) {
ArrayList list = new ArrayList();
System.out.println("测试!"+list.toString());
}
}

实际上java包的管理就是文件的管理,包access.mypackage对应的文件路径access/mypackage/。

.如果想引入别人写好的包,可以直接添加在当前项目src目录下,或者添加在环境变量CLASSPATH中指定的目录下。

二 Java访问权限修饰符

访问控制权限,从最大权限到最小权限依次为:public、protected、包访问权限(没有关键字)、private。在编写类库时,尽可能将一切方法都定为private,如果没有指定任意的访问权限,则意味着它是"包访问权限"。

1、包访问权限

如果一个类中的成员没有指定访问权限修饰符,则默认是包访问权限,即当前类所属的包中的所有其它类对该成员都有访问权限,但是包之外的所有类,这个成员却是private。

包访问权限允许将包内所有相关的类组合起来,以使它们彼此之间可以轻松的相互作用。

2、public

使用public修饰的成员表示这个成员对每个类都是可用的。

创建一个access.dessert的包,在该包下创建一个Cookie类:

package access.dessert;

public class Cookie {
public Cookie() {
System.out.println("Cookie constructor!");
}
//默认包访问权限
void bite() {
System.out.println("bite!");
}
}

在默认包下面创建一个使用Cookie类的程序:

import access.dessert.*;

public class Dinner {
public static void main(String[] args) {
Cookie x = new Cookie();
//x.bite(); //无法访问,因为bit只向在access.dessert包中的类提供访问权限
} }

可以看到在默认包之中,无法访问bite()函数。

3、private

除了包含该成员的类之外,其他任何类都无法访问这个成员。

4、protected

protected是继承访问权限,在父类中(位于包A)声明为protected的成员,可以在子类中(位于包B)使用。如果把上面的bite()函数声明成protected修饰符,并且在默认包中有一个类SubCookie继承于Cookie,则SubCooki类实例可以调用bite()函数。

package access.dessert;

public class Cookie {
public Cookie() {
System.out.println("Cookie constructor!");
}
protected void bite() {
System.out.println("bite!");
}
}
import access.dessert.*;

class SubCookie extends Cookie{
Egg(){
super.bite();
}
} public class Dinner {
public static void main(String[] args) {
SubCookie e = new SubCookie();
} }

运行如下:

Cookie constructor!
Cookie constructor!
bite!

三 类访问权限

1、每个编译单元(文件),只能有一个public类,这表示每个编译单元都有单一的公共接口,用public类来实现。

2、public类的名称必须完全和含有该编译单元的文件名相匹配。

3、如果一个编译单元,有多个类,那么只能一个类是public修饰的,其它类只能使用默认修饰符(即包访问权限)。

参考文献:

[1]Java编程思想

Java基础 -- 访问控制权限的更多相关文章

  1. Java面向对象-访问控制权限

    Java面向对象-访问控制权限 Java中,可以通过一些Java关键字,来设置访问控制权限: 主要有 private(私有), package(包访问权限),protected(子类访问权限),pub ...

  2. Java基础—访问权限控制

    Java中访问权限控制的作用: 为了使用户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作时必要的,但是它并不属于客户端程序员所需接口的一部分. 为了让类库设计者可用更改类的内部工作方式,而不 ...

  3. Java基础--访问权限控制符

    今天我们来探讨一下访问权限控制符. 使用场景一:攻城狮A编写了ClassA,但是他不想所有的攻城狮都可以使用该类,应该怎么办? 使用场景二:攻城狮A编写了ClassA,里面有func1方法和func2 ...

  4. JAVA基础之访问控制权限

    包:库单元 1.当编写一个Java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元). 2.每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类名称必须 ...

  5. Java 多态 父类和子类方法的访问控制权限

    Java 多态 父类和子类方法的访问控制权限 @author ixenos 父类和子类方法的访问控制权限 继承是为了扩展类的功能,而这种扩展显然就是对一个原始类的扩展,目的还是向上转型来调用,所以这就 ...

  6. java基础(八)-----深入解析java四种访问权限

    Java中的访问权限理解起来不难,但完全掌握却不容易,特别是4种访问权限并不是任何时候都可以使用.下面整理一下,在什么情况下,有哪些访问权限可以允许选择. 一.访问权限简介 访问权限控制: 指的是本类 ...

  7. java基础(七) java四种访问权限

    引言   Java中的访问权限理解起来不难,但完全掌握却不容易,特别是4种访问权限并不是任何时候都可以使用.下面整理一下,在什么情况下,有哪些访问权限可以允许选择. 一.访问权限简介 访问权限控制: ...

  8. Java访问控制权限

    在Java中一共存在四种访问控制权限,即 private.default(默认).protected和public 1.private 访问权限 private属于私有访问权限,可以用在属性的定义.方 ...

  9. 【Java_基础】Java的访问权限控制

    1.类成员的访问权限控制 Java中类成员的访问权限分为四类:private,无(默认情况下),protected和public.其权限控制如下表所示: 修饰词 本类 同一个包的类 继承类 其他类 p ...

随机推荐

  1. 18-10-31 Scrum Meeting 3

    1.会议照片 2.每人的工作 昨天完成的工作   1 制定配置 修改配置 查询配置这三个接口   2 3 获取单词对应的中文释义   4 完成测验的部分接口   5 后端对接计划的接口   6 剩余的 ...

  2. 测者的性能测试手册:Web压力测试工具webbench

    webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: wget http:/ ...

  3. PJProject(2.6) 工程介绍

    pjlib pjlib\build\pjlib.vcproj pjlib_test pjlib\build\pjlib_test.vcproj pjsip_core pjsip\build\pjsip ...

  4. django源码分析 python manage.py runserver

    django是一个快速开发web应用的框架, 笔者也在django框架上开发不少web应用,闲来无事,就想探究一下django底层到底是如何实现的,本文记录了笔者对django源码的分析过程 I be ...

  5. MySQL 基础知识梳理学习(四)----GTID

    在日常运维中,GTID带来的最方便的作用就是搭建和维护主从复制.GTID的主从模式代替了MySQL早期版本中利用二进制日志文件的名称和日志位置的做法,使用GTID使操作和维护都变得更加简洁和可高. 1 ...

  6. 【公众号系列】两分钟学会SAP F1技巧

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]两分钟学会SAP F1技巧   写 ...

  7. XPath Helper的安装与使用

    摘要 : XPath Helper可以支持在网页点击元素生成xpath,整个抓取使用了xpath.正则表达式.消息中间件.多线程调度框架的chrome插件. xpath:是一门XML和HTML文档中查 ...

  8. SQLServer之删除触发器

    删除触发器 注意事项 可以通过删除DML触发器或删除触发器表来删除DML触发器. 删除表时,将同时删除与表关联的所有触发器. 删除触发器时,会从 sys.objects.sys.triggers 和 ...

  9. SQLServer之创建辅助XML索引

    创建辅助XML索引 使用 CREATE INDEX (Transact-SQL)Transact-SQL DDL 语句可创建辅助 XML 索引并且可指定所需的辅助 XML 索引的类型. 创建辅助 XM ...

  10. python接口自动化-get请求

    一.环境安装 1.用pip安装requests模块 >>pip install requests 二.get请求 1.  url 1.1:   response 的返回内容还有很多信息,例 ...