Java编程思想 第六章 访问权限控制

从零开始打jar包
https://www.cnblogs.com/flashsun/p/7246260.html

6.1 包:库单元

package与import关键字

Java用关键字package将一组类放到了单一的命名空间之下。

如jre/lib/rt.jar 是Java的基础类库,在命名空间java.util中有一个类叫做ArrayList的类。使用ArrayList的方法:

/** 使用全名 */
java.util.ArrayList list = new java.util.ArrayList();

/** 导入类,在import语句中命名该类 */
/** 同package下的类不需要import */
import java.util.*;
ArrayList list = new ArrayList();

代码组织规则

(1)main方法一定是public,否则Java虚拟机调不到。
(2)一个Java源代码文件被称为一个编译单元,编译单元内的多个类在编译后会生成多个与类名同名的class文件。如果没有public类,文件可以随意命名。

/** Person.java */
/** 生成Person1.class和Person2.class */
class Person1 {
	public static void main(String[] args) {
	}
}
class Person2 {
	public static void main(String[] args) {
	}
}

(3)如果编译单元内有public关键字的话(允许package外的类调用),那么只能有一个public类,并且该类的名称必须与文件的名称相同。编译单元之中额外的类用来为主public类提供支持,在包之外看不到这些类。(类的名称必须与文件的名称相同使得:import路径,java源文件名,class文件名,public类名都能保持一致)

/** Person1.java */
public class Person1 {
	public static void main(String[] args) {
	}
}
class Person2 {
	public static void main(String[] args) {
	}
}

打jar包

一组.class文件可以打包并压缩成JAR包(Java文档文件,使用Java的jar文档生成器)。

  • 右键项目 / Open Module Settings
  • Artifacts / +号 / JAR / From modules with dependencies
  • 指定Main-Class MANIFEST.MF设置为项目根目录
  • Build / Build Artifacts / Build
package com.fei.han;

import com.shan.yu.Peson1;

public class Person {
	public static void main(String[] args) {
		Person1.person1();
	} 
}
package com.shan.yu;

public class Person1 {
	public static void person1() {
		System.out.println("Person1...............");
	} 
}

导入jar包

  • 右键项目 / Open Module Settings
  • Modules / Depenencies / +号 / JARs
package com.fei.han;

import com.shan.yu.Person1;

public class Man {
    public static void main(String[] args) {
        Person1.person1();
    }
}

运行jar包

java -jar bbbbbb.jar

Java解释器的运行过程

(1)import关键字指定了需要导入的类的路径,在运行时会将每个句点替换成反斜杠,然后从CLASSPATH中按照类的路径寻找对应的.class文件。

(2)CLASSPATH包含一个或多个目录,用作查找.class文件的根目录。

%Java_Home%\bin;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar
  • Java_Home代表了jdk的路径
  • dt.jar是关于运行环境的类库,主要是用于swing的包,如果不使用可以不配置。
  • tools.jar是工具类库,它在编译和运行一个类时被使用

(3)在JDK1.5以后,classpath并不是必须配置了,在JDK1.5之前,是没有办法在当前目录下加载类的(找不到 JDK目录下lib文件夹中的.jar文件),所以我们需要通过配置classpath,但JDK1.5之后,JRE能自动搜索目录下类文件,并且加载dt.jar和tool.jar的类。

(4)通过官方的文档说明我们可以看到,rt.jar和tool.jar这两种属于java平台自身的包就不需要添加到classpath中,只有一些第三方类或者自定义类需要,也并不推荐使用配置CLASSPATH的方法,更推荐使用-classpath选项。(https://www.runoob.com/java/env-classpath.html)

import static静态导入

public class Person {
	public static void main(String[] args) {
		System.out.println(Math.sqrt(4));
	}
}
import static java.lang.Math.*;
public class Person {
	public static void main(String[] args) {
		System.out.println(sqrt(4));
	}
}

Java访问权限修饰词

(1)包访问权限-friendly:默认的,包内可访问
同包:两个类的package路径完全相同(在相同的命名空间下)
默认的访问权限,在忘记添加时能够自动得到的权限。
(2)public:公开使用
(3)private:类内可访问
将构造器设为private,用户只能通过调用其他方法来构造对象。
(4)protected:继承访问权限
基类的创建者会希望有某个特定成员,把对它的访问权限赋予派生类而不是所有类。

小结

类内:private
同包:包访问权限。
不同包但是继承了父类:protected。
不同包:public。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值