Java笔记(十八)……包
概述
对类文件进行分类管理。
给类提供多层命名空间。
写在程序文件的第一行。
类名的全称的是 包名.类名。
包也是一种封装形式。
访问权限
引用《The Complete Reference》中的经典例子来说明Java包中类成员的访问权限问题
下面的例子显示了访问修饰符的所有组合
该例有两个包和五个类
记住这两个不同包中的类需要被存储在以它们的包p1、p2命名的目录下。
第一个包定义了三个类:
Protection Derived 和 SamePackage:
Protection类以合法的保护模式定义了四个int变量
变量n默认权限
变量n_pri是private权限
变量n_pro是protected权限
变量n_pub是public权限。
Derived类作为Protection同一个包中的子类出现。
SamePackage类作为Protection同一个包中的非子类出现。
第二个包定义了两个类:
Protection2 和 OtherPackage。
Protection2类作为Protection的其他包中的子类出现。
OtherPackage类作为Protection的其他包中的非子类出现。
这些类都试图访问Protection中的所有成员,访问受限的语句被注释掉,并加以注明。
下面是Protection.java文件:
1: package p1;
2:
3: public class Protection
4: {
5: int n = 1;
6: private int n_pri = 2;
7: protected int n_pro = 3;
8: public int n_pub = 4;
9:
10: public Protection()
11: {
12: System.out.println("base constructor");
13: System.out.println("n = "+n);
14: System.out.println("n_pri = "+n_pri);
15: System.out.println("n_pro = "+n_pro);
16: System.out.println("n_pub = "+n_pub);
17: }
18: }
下面是Derived.java文件:
1: package p1;
2:
3:
4: class Derived extends Protection
5: {
6: Derived()
7: {
8: System.out.println("derived constructor");
9: System.out.println("n = "+n);
10:
11: //class only
12: //System.out.println("n_pri = "+n_pri);
13:
14: System.out.println("n_pro = "+n_pro);
15: System.out.println("n_pub = "+n_pub);
16: }
17: }
下面是SamePackage.java文件:
1: package p1;
2:
3: class SamePackage
4: {
5: SamePackage()
6: {
7: Protection p = new Protection();
8: System.out.println("same package constructor");
9: System.out.println("n = "+p.n);
10:
11: //class only
12: //System.out.println("n_pri = "+p.n_pri);
13:
14: System.out.println("n_pro = "+p.n_pro);
15: System.out.println("n_pub = "+p.n_pub);
16: }
17: }
下面是Protection2.java文件:
1: package p2;
2:
3: class Protection2 extends p1.Protection
4: {
5: Protection2()
6: {
7: System.out.println("derived other package constructor");
8:
9: //class or package only
10: //System.out.println("n = "+n);
11:
12: //class only
13: //System.out.println("n_pri = "+n_pri);
14:
15: System.out.println("n_pro = "+n_pro);
16: System.out.println("n_pub = "+n_pub);
17: }
18: }
下面是OtherPackage.java文件:
1: package p2;
2:
3: class OtherPackage
4: {
5: OtherPackage()
6: {
7: p1.Protection p = new p1.Protection();
8: System.out.println("other pacage constructor");
9:
10: //class or package only
11: //System.out.println("n = "+p.n);
12:
13: //class only
14: //System.out.println("n_pri = "+p.n_pri);
15:
16: //class,subclass or package only
17: //System.out.println("n_pro = "+p.n_pro);
18:
19: System.out.println("n_pub = "+p.n_pub);
20: }
21: }
下面试试这两个包,通过以下两个测试文件
包p1的测试文件:
1: /*
2: Demo package p1.
3: */
4:
5: package p1;
6:
7:
8: public class Demo
9: {
10: public static void main(String[] args)
11: {
12: Protection ob1 = new Protection();
13: Derived ob2 = new Derived();
14: SamePackage ob3 = new SamePackage();
15: }
16: }
包p2的测试文件:
1: /*
2: Demo package p1.
3: */
4:
5: package p1;
6:
7:
8: public class Demo
9: {
10: public static void main(String[] args)
11: {
12: Protection ob1 = new Protection();
13: Derived ob2 = new Derived();
14: SamePackage ob3 = new SamePackage();
15: }
16: }
编译:
运行Demo1:
运行Demo2:
由此我们可以得到以下结论:
Java笔记(十八)……包的更多相关文章
- python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置
python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...
- 《java面试十八式》--引子
爪哇城中 “喂,你等等我啊”少女气喘吁吁的喊道 “大小姐,你可快点吧,报名马上就要结束了.” 这是爪哇城一年一度的大选比赛,被选上的人会留下来任职,享有名誉和金钱,所以大家都在积极准备. ...
- java基础十[包、Jar存档文件和部署](阅读Head First Java记录)
将Java的class文件生成为可执行的Java应用程序.Java应用程序有三种:完全在本机执行的Jar(例如本机的GUI可执行程序):完全在服务器端远程执行的(例如浏览器来进行存取):介于两者之间的 ...
- (C/C++学习笔记) 十八. 继承和多态
十八. 继承和多态 ● 继承的概念 继承(inheritance): 以旧类为基础创建新类, 新类包含了旧类的数据成员和成员函数(除了构造函数和析构函数), 并且可以派生类中定义新成员. 形式: cl ...
- Java基础学习笔记十八 异常处理
什么是异常?Java代码在运行时期发生的问题就是异常. 在Java中,把异常信息封装成了一个类.当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置.原因等). 异常的继承体系 在 ...
- Java学习笔记十八:Java面向对象的三大特性之封装
Java面向对象的三大特性之封装 一:面向对象的三大特性: 封装 继承 多态 二:封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访 ...
- 黑马程序员 Java基础<十八>---> 网路编程
--------------- ASP.Net+Android+IO开发S..Net培训.期待与您交流! --------------- 第一 概述 一.概述: 1.网络模型:OSI参考模型和TCP ...
- Java进阶(十八)Java实现定时器(Timer)
Java实现定时器(Timer) 绪 在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等.对于这样的操作最方便.高效的实现方式就是使用java.util.Timer工具类.java.u ...
- java基础(十八)----- java动态代理原理源码解析
关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理. 静态代理 1.静态代理 静态代理:由程序员创建或特定工 ...
随机推荐
- 细说PHP中strlen和mb_strlen的区别
在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别.下面通过例子,讲解这两者之间的区别. $str='中文a字1符'; ec ...
- [C和指针] rearrange.c
C和指针_程序1.1_重排字符 /* ** 这个程序从标准输入(键盘)中读取输入行并按需求处理后在标准输出(屏幕)中打印, ** 每个输入行的后面一行是该行按需求处理后的输出内容. ** ** 输入的 ...
- Hive优化(转)
一.join优化 Join查找操作的基本原则:应该将条目少的表/子查询放在 Join 操作符的左边.原因是在 Join 操作的 Reduce 阶段,位于 Join 操作符左边的表的内容会被加载进内存, ...
- SQL中子查询为聚合函数时的优化
测试数据:create table test1 as select * from dba_objects where rownum<=10000;--10000条记录create table t ...
- Apple 如何知道你使用了私有API
大约有三种方式 otool -L这个工具可以清晰的列出你链接所有的库 像IO.Kit是不允许使用的 nm -u 这个工具可以清晰的列出你所有链接符号如 C方法 OC方法 检查所有Selecter的字符 ...
- hadoop 存储空间满了
-- ::, WARN mapred.LocalJobRunner - job_local_0001 org.apache.hadoop.util.DiskChecker$DiskErrorExcep ...
- BZOJ 3997 [TJOI 2015 组合数学] 解题报告
这个题我脑洞了一个结论: 首先,我们定义满足以下条件的路径为“从右上到左下的路径”: 对于路径上任何不相同的两个点 $(x_1, y_1)$,$(x_2, y_2)$,都有: $x_1\neq x_2 ...
- Winform datagridview相关操作
datagridview显示行号的2种方法: 方法一: 网上最常见的做法是用DataGridView的RowPostPaint事件在RowHeaderCell中绘制行号: privatevoiddat ...
- Bootstrap 貌似不错,先做一下记录
Bootstrap 简洁.直观.强悍的前端开发框架,让web开发更迅速.简单. http://www.bootcss.com/
- http://blog.csdn.net/carolzhang8406/article/details/7196011
http://blog.csdn.net/carolzhang8406/article/details/7196011