博客
关于我
JAVA 包机制、访问修饰符、jar包、模板设计
阅读量:589 次
发布时间:2019-03-11

本文共 2050 字,大约阅读时间需要 6 分钟。

包机制

 

问题:当定义了多个类的时候,可能会发生类名的重复问题。

java中采用包机制处理开发者定义的类名冲突问题。

怎么使用java的包机制呢?

1. 使用package 关键字。

2. package 包名。

问题:

1. javac PackDemo1.java编译没有问题。

2. java PackDemo1 运行出错。

 

错误原因分析:

在当前目录下找不到有pack目录,更加找不到pack目录下面的PackageDemo1.java文件。

解决办法: 

1. 自己在当前目录下新建一个pack目录。

2. 执行Java pagk.PackageDemo1命令。(包其实就是文件夹).

存在的问题:使用包机制的话,我们是否每次都要自己创建一个文件夹呢?

解决:

在编译的时候则可以指定类文件存放的文件夹了。

javac -d . PackageDemo1.java    -d 后面跟着就是包名,指定包存放的路径。

 

包的优点

1. 防止类文件冲突。

2. 使源文件与类文件分离,便已软件最终发布。

注意细节

1. 一个java类只能定义在一个包中。

2. 包语句肯定是描述类的第一条语句。

包机制引发的问题

有了包之后访问类每次都需要把包名和类名写全。

 

解决:使用import语句。

格式 import 包名.类名 ;

 

注意细节:

1. 如果想使用一个包中的许多类时,这时不需要多条的导入语句,使用 “*”号通配符代表所有的类。

2. 使用*时不能导入包中的子类包的class文件。

3. import语句可以是多条.

访问修饰符

访问修饰符是用来控制类、属性、方法的可见性的关键字称之为访问修饰符。

1. public 一个类中,同一包中,子类中,不同包中

2. protected  一个类中,同一包中,子类中

3. default 一个类中,同一包中

4. private 一个类中

 

1. (修饰类成员)类成员

1. 成员使用private修饰只在本类中使用。

2. 如果一个成员没有使用任何修饰符,就是default,该成员可以被包中的其

3. 他类访问

4. protected成员被protected修饰可以被包中其他类访问,并且位于不同

5. 包中的子类也可以访问

6. public修饰的成员可以被所有类访问

2. (修饰类)

1. 类只有两种public和默认(成员内部类可以使用private))

2. 父类不可以是privateprotected,子类无法继承

3. public类可以被所有类访问

4. 默认类只能被同一个包中的类访问

Jar

1jar就是打包文件

jar文件时一种打包文件java active File,zip兼容,称之为jar

开发了很多类,需要将类提供给别人使用,通常以jar包形式提供.当项目写完之后,需要及将class字节码文件打包部署给客户。如何打包?可以使用jar命令.

2jar命令

1jar工具存放于jdkbin目录中(jar.exe)

2jar工具:主要用于对class文件进行打包(压缩)

3dos中输入jar查看帮助

3案例使用jar命令

day10中的cn文件打包为名字为test.jar文件(cn 文件是使用javac -d 编译带包的class文件夹)

jar cvf test.jar cn

详细命令:

1jar cf test.jar cn 在当前目录生成test.jar 文件,没有显示执行过程

2jar cvf test.jar cn 显示打包中的详细信息

3jar tf test.jar  显示jar文件中包含的所有目录和文件名

4jar tvf test.jar 显示jar文件中包含的所有目录和文件名大小,创建时间详

细信息

5jar xf test.jar  解压test.jar到当前目录,不显示信息

6jar xvf test.jar 解压test.jar到当前目录,显示详细信息

7:可以使用WinRaR进行jar解压

8;将两个类文件归档到一个名为 test2.jar 的归档文件中:

jar cvf test2.jar Demo3.class Demo4.class

9:重定向

1tvf可以查看jar文件内容,jar文件大,包含内容多,dos看不全。

2:查看jdk中的rt.jar 文件 jar tvf rt.jar

3jar tvf rt.jar>d:\rt.txt

模板设计.

设计模式就是为了解决某类事情提出的解决方法。

案例:计算一段程序的执行时间

 

存在问题:

1. 计算的程序的可变的。

2. 把会改变的程序抽取出来单独做一个方法。

3. 但是该方法不能确定运行的代码,声明为抽象的方法。

4. 创建实现类继承并实现父类的未实现的函数。

5. 为了避免子类重写父类的模版代码,需要将模版代码修饰为final

 

 

案例二:炒菜做饭

 

 

 

你可能感兴趣的文章
Nginx配置实例-反向代理实例:根据访问的路径跳转到不同端口的服务中
查看>>
Nginx配置实例-反向代理实现浏览器请求Nginx跳转到服务器某页面
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Nginx配置自带的stub状态实现活动监控指标
查看>>
nginx配置详解、端口重定向和504
查看>>
Nginx配置负载均衡到后台网关集群
查看>>
Nginx配置限流,技能拉满!
查看>>
Nginx配置静态代理/静态资源映射时root与alias的区别,带前缀映射用alias
查看>>
Nginx面试三连问:Nginx如何工作?负载均衡策略有哪些?如何限流?
查看>>
Nginx:NginxConfig可视化配置工具安装
查看>>
ngModelController
查看>>
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
ngrok内网穿透可以实现资源共享吗?快解析更加简洁
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>