天天看點

package和import

當java類都是放在同一個目錄下的時候,類之間的互相調用無需顯式聲明調用

同一個目錄下,兩個類的名字不能相同

檔案過多,查找和修改都不易,且容易出錯。

java支援多個目錄放置java,并且用過package/import/classpath、jar等級制配合使用,可以支援跨目錄放置和調用java類

package包,和c++中的namespace類似,

在java類檔案中的第一句話給出包的名稱

package和import

類全稱(長名稱)=包名稱+類名

短名稱=類名

類全稱cn.edu.ecnu.PackageExample,短名稱PackageExample

引用類的時候,必須采用全稱引用;程式正文可以用短名稱

PackageExample.java必須嚴格放置在cn/edu/ecnu目錄下

包名package name 要唯一

在PackageExampleTest.java中,可用import關鍵字來引入PackageExample類

package和import

cn.edu.ecnu是測試類PackageExample的包名

import相當于c++中的include

import有兩種寫法:①import cn.edu.ecnu.PackageExample

                                ②import cn. edu.ecnu.*,不能import cn.*,*代表目錄下的所有檔案,但不包括子檔案夾

import規則

import必須全部放在package之後,類定義之前(差不多是代碼的第二行)

package必須是第一句話

多個import的順序無關

可以用*來引入一個目錄下的所有類(但不包括它們的子類),也就是說不能遞歸包含各個目錄下的檔案

import盡量精确,不推薦使用*,以免新增的同名程式會使得老程式報錯

例一:

package com.text;

public class NewExample {
    public void hello() {
      System.out.println("hello");
    };
}      
package net.abc;

import com.text.NewExample;

public class NewExampleTest {
  public static void main (String[] a) {
    new NewExample().hello();
  }

}      
package和import

在NewExampleTest中調用另一個包中的NewExample類。

package a;

public class Man {

}      
package b;

public class Man {

}      
package c;

import a.*;
import b.*;

public class Test {

  public static void main(String[] args) {
    a.Man m = new a.Man();//當程式中存在多個import*
//(即調用多個目錄所有檔案),将面臨着調用類指代不清的風險
  }

}
/*交代不清有兩種解決方法,①:在調用的時候指明調用的是什麼即a.man
②:在import的時候,删除一個,用另一個的時候用b.Man調用
程式中需要引用多個同名的類,那麼隻能import其中一個,
并可用類名調用。
其他的類必須用全稱(類名加包名)調用。*/