包
(1)包:packageA:對類文件進行分類管理
B:給類提供多層命名空間,處理類名衝突!
C:放在程序代碼的第一行(註釋除外)
B的例子:
java.awt.List
java.util.List
java.sql.Date
java.util.Date
(2)包的命名(小寫)
所有字母都要小寫!
包名也是標識符,與類名、變量名等,都是標識符,應該遵守標識符規範。
(3)訪問:先得有包,然後:包.類名
編譯自動生成包層次文件夾
javac –d 路徑 源文件名稱
java c –d . 源文件名稱
javac - d . PackageDemo.java
-d 後面跟的是:目錄
當前目錄:.
運行時使用包的完全限定名(帶包名)
運行類時,一定要給出完全限定名(全名)。
java cn.itcast.類名
(4)不同包之間類的訪問
類一定要用類的完全限定名:包名.類名
2:protected
包之間的繼承關係(子類),或者同包。
3:import
1)使用import引入指定包中所有類(簡化類名:import 包.*)
一個程序文件中只有一個package,可以有多個import。
用來導包中的類,不導入包中的包。
2)錯誤的import引入
import java.*; (java包下沒有類只有包,*代表所有類)
import *.*;
3)無需引入的包java.lang
java.lang包下的類是常用類無需使用import來導入,但你非要導入也可以。
4:jar
(1)打包:
打jar包 :jar cf Package.jar cn(jar cf 打包後的名稱 要打包的名稱)
(2)查看jar包
jar -xvf Package.jar
(3)jar.exe命令的參數
c:創建新的jar文件
f:指定文件名稱
v:顯示打包過程
m:指定清單文件
t:查看以存在jar文件內容
(4)查看以存在jar文件內容:jar –tf Package..jar
5:權限修飾符
同一個類中 同一個包中不同包中子類中 不同包中,不存在繼承關係
private OK
默認 OK Ok
protected OkOk Ok
public OK Ok OK OK
6:關鍵字用來修飾什麼?
類 屬性方法 構造方法
private OK OK OK
默認 OK OkOk OK
protected Ok Ok OK
public Ok Ok Ok OK
static Ok Ok
final Ok Ok Ok
abstract Ok Ok
特殊:private和static可以修飾內部類。不用掌握。
static可以代碼塊。靜態代碼塊。掌握。
A:權限修飾符任意時刻只能使用一種。
B:static,private,final 不能和abstract並用。
例1,導包例子
import java.util.Date;
class PackageTest
{
public static void main(String[] args)
{
Date d = new Date();
}
}
例2,編譯自動生成包層次文件夾
javac –d 路徑 源文件名稱
java c –d . 源文件名稱
javac –d . PackageTest.java
運行時使用包的完全限定名(帶包名)
運行類時,一定要給出完全限定名(全名)。
java cn.itcast.類名
package cn.itcast;
class PackageTest
{
public static void main(String[] args)
{
System.out.println("Hello!!!");
}
}
例3打包
1,編譯自動生成包層次文件夾 javac –d . PackageTest.java
2,打jar包 :jar cf Package.jar cn(jar cf 打包後的名稱 要打包的名稱)
package cn.itcast;
class PackageTest
{
public static void main(String[] args)
{
System.out.println("Hello!!!");
}
}
例4把jar包引入到classpath中(會用到例3中的包)
先把這個包Package.jar放在F:\java0108\目錄下
再配置classpath
然後編譯,運行
E:\java0108\day11>set classpath=F:\java0108\Package.jar;.
E:\java0108\day11>javac -d . MainApp.java
E:\java0108\day11>java cn.itcast.MainApp
Hello!!!
package cn.itcast;
import cn.itcast.PackageTest;
class MainApp
{
public static void main(String[] args)
{
PackageTest.main(null);
}
}
例5把jar包引入到classpath中
package cn.itcast;
import cn.itcast.PackageTest;
class PackageTest
{
public static void main(String[] args)
{
System.out.println("Hello!!!");
}
}
例6protected(保護)訪問級別 (寫兩個java文件PackageTest .java ,MainApp.java)
package cn.itcast.a;
public class PackageTest {
protected void fun() {
System.out.println("PackageTest#fun()...");
}
}
package cn.itcast.main;
import cn.itcast.a.PackageTest;
public class MainApp extends PackageTest {
public void app() {
// super.fun();
}
public static void main(String[] args) {
MainApp ma = new MainApp();
ma.fun();
}
}