您的位置:首页 > 编程语言 > Java开发

[2014-3-25]JAVA笔记_包、访问权限控制、jar命令、java命名规范

2014-03-25 23:45 453 查看
一、 包的概念及使用

1. package 是在使用多个类或接口时,为了避免名称重复而采用的一种措施,直接在程序中加入 package 关键字即可。

作用:用于将完成不同功能的类分门别类,放在不同的目录(包)下。

命名规则:将公司域名反转作为包名。www.sun.com, com.sun(包名), 对于包名:每个字母都需要小写。

【定义格式】

package 包名称。子包名称;

//为程序打包
package org.sdd.demo08;					//定义一个包
class Demo{
public String getInfo(){
return "Hello World!!!";
}
}
public class PackageDemo01{
public static void main(String args[]){
System.out.println(new Demo().getInfo());		//实例化本包对象
}
}
以上程序主要的功能是在屏幕上打印“Hello World!!!”字符串,但是因为程序是在包中,所以此时完整的类名称应该为 “包。类名称”,即“org.sdd.demo08.PackageDemo01”, 在编译的时必须加上若干参数才行,编译语法如下:

编译:javac -d 。 PackageDemo01.java

-d: 表示生成目录,生成的目录以package 的定义为准。

。:表示在当前所在的文件夹中生成。

执行: java org.sdd.demo08.PackageDemo01

2. 导入(import),将使用 package 分离的各个类导入回来,让编译器能够找到所需要的类。

注意:导入的是一个类,而不是一个包。 import aa.bb.*并不会导入 aa.bb.cc包下的类,这是需要写:import aa.bb.*; import aa.bb.cc.*;

【格式   类的导入】

import 包名称。子包名称。类名称;-> 手工导入所需要的类

import 包名称。子包名称。*;-> 由JVM 自动加载所需要的类

//新加一个文件修改Demo类的定义
package org.sdd.demo08.a;					//定义一个包
public class Demo{					//定义为public的类必须与文件名相同
public String getInfo(){
return "Hello World!!!";
}
}

//在另外一个类中引用Demo类
package org.sdd.demo08.b;
import org.sdd.demo08.a.Demo;				//导入不同包中的Demo类
public class ImportDemo01{
public static void main(String args[]){
System.out.println(new Demo().getInfo());
}
}
提示:关于 public class 与 class 声明类的补充。

如果一个类声明为 public class,则文件名称必须与类名称一直,而且在一个类文件中只能有一个 public class, 而如果使用 class 声明一个类,则文件名称可以与类名称不一致,但是执行时必须执行生成的class 文件名称。除了这些之外,public class 和 class 还在包的访问上有所限制,如果一个类只在本包中访问,不需要被外包访问,则直接声明称 class 即可;而如果一个类需要被外包访问,则必须声明为
public class。

可以使用“*”方式由 JVM 根据需要自动加载所需的类,手动导入与使用*号导入性能是一样的。但是,如果在一个程序中同时导入了两个包的同名类,在使用时就必须明确地写出完整的“包。类名称”。

3. 静态导入

JDK 1.5之后提供了静态导入功能。如果一个类中的方法全部是使用 static 声明的静态方法,则在导入时就可以直接诶使用 import static 的方式导入。

【格式
静态导入】

import static包。类。*;

//定义一个类,全部由静态方法组成
package org.sdd.demo08.e;
public class Operate{				//里面的方法全部都是 static 类型
public static int add(int i, int j){			//加法操作
return i + j;
}
public static int sub(int i, int j){			//减法操作
return i - j;
}
public static int mul(int i, int j){			//乘法操作
return i * j;
}
public static int div(int i, int j){			//除法操作
return i / j;
}
}

//使用静态导入
package org.sdd.demo08.f;
import static org.sdd.demo08.e.Operate.*;			//静态导入
public class StaticImportDemo{
public static void main(String args[]){
System.out.println("3 + 3 = " + add(3, 3));		//直接调用静态方法
System.out.println("3 - 2 = " + sub(3, 2));		//直接调用静态方法
System.out.println("3 * 3 = " + mul(3, 3));		//直接调用静态方法
System.out.println("3 / 3 = " + div(3, 3));		//直接调用静态方法
}
}
使用静态导入,所以 Operate 类中的所有静态方法可以直接在 StaticImportDemo 类中使用,而不需要使用“类。静态方法()” 的形式调用。
总结: 当需要使用的类与当前类不再同一个目录下才需要导入,如果两个类在同一目录下则不需要导入,直接使用即可。

4. 关于 package、import、class 的顺序问题:

      a)首先需要定义包(package), 可选

      b)接下来使用 import 进行导入, 可选

      c)然后才是 class 或 interface 的定义。

二、 访问权限

Java中一共存在4中访问控制权限,即 private、default(默认)、protected、public。

(1) private: 私有访问权限。可以用在属性的定义、方法的声明上。被 private 所修饰的属性和方法只能在该类内部使用。

(2) default: 默认访问权限。在类内部以及相同包下面的类所使用。

(3) protected: 受保护的。被 protected 所修饰的属性和方法可以在类内部、相同包、及该类的子类所使用(可以被子类所继承下来使用,而不是在子类里面定义方法去访问。或者说它可以被子类继承下来)。

(4) public:公共访问权限。一个类中的成员使用了 public 访问权限,就可以在所有类中被访问, 不管是否在同一个包中。



例子:protected 所修改的可以被子类继承下来使用。

package com.test.base;

public class ProtectedTest extends Parent {

public void output(){
System.out.println(age); //直接使用被继承下来的方法或属性
print();
}

public static void main(String[] args) {
ProtectedTest pt = new ProtectedTest();
pt.output();
}
}

class Parent{
protected int age = 10;

protected void print(){
System.out.println("This is parent");
}
}

三、jar命令的使用

作用: 将 *。class 文件 压缩成一个文件。jar(Java Archive File)

查看:JDK中的bin目录 jar.exe,在命令行输入  jar 可以查看此命令的提示界面。

如何使用jar文件:得到一个 jar 文件后,可以通过设置 classpath 的方式在系统中注册好此 jar 文件,以供程序使用。设置命令: SET CLASSPATH=.;F:\text\my.jar。从当前文件中查找,或指定路径查找。

jar 命令中的主要参数:

· C: 创建新的文档。

· V: 生成详细的输出信息。

· F: 指定存档的文件名。

查看 jar 包中的全部内容: “jar -tvf 文件名称”。

解压缩 jar 包中的文件:“jar-xf 文件名称”即可。

四、 Java 命名规范

(1) 类: 所有单词的首字母大写,如 TestJava

(2) 方法: 第一个单词的首字母小写,之后每个单词的首字母大写,如 getInfo()。

(3) 属性: 第一个单词的首字母小写,之后每个单词的首字母大写,如 studentName 。

(4) 包: 所有单词的字幕小写,如 org.sdd.demo。

(5) 常量: 所有单词的字母大写,如 FLAG。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息