------- android教育訓練、java教育訓練、期待與您交流!---------
内部類
将一個類定義在一個類的裡面,這個類稱為内部
為什麼會出現内部類?
描述事物時,當這個事物的内部還有事物,該事物就用内部類來描述,因為内部事物在使用外部事物
内部類之是以可以直接通路外部類中的成員,包括私有
是因為内部類持有了外部類中的引用,格式:外部類名.this
外部類要通路内部類,必須要建立内部類對象
1 當内部類定義在外部類成員位置,而且非私有,可以在外部其他類中直接建立内部類 對象
格式:外部類名.内部類名 變量名=外部類對象.内部類對象;
Outer.Inner inr=new Outer().new Inner();
2 當内部類在成員位置上,就可以被成員修飾符所修飾
比如,private:将内部類在外部類中進行封裝.
static:内部類就具備static的特性.
當内部類被static修飾後,隻能直接通路外部類中的static成員
在外部類中如何直接通路static内部類的非靜态成員呢?
new Outer.inner().function();
在外部其他類中,如何直接通路static内部類的靜态成員呢?
uter.inner.function();
注意:當内部類中定義了靜态成員,該内部類必須是靜态的
當外部類的靜态方法要通路内部類時,該内部類也必須是靜态的
外部類要直接通路内部類中的成員時,要把内部類定義為靜态才行,因為外部類是先于内部類出現的
/*
内部類通路的練習
*/
class Outer
{
int num=3;
public void out()
{
System.out.println(Inner.num);
}
//定義一個内部類
static class Inner
{
static int num=5;
public void inn()
{
//列印外部類的num
System.out.println(num);
//列印内部類的num
System.out.println(num);
}
}
}
class OutInDemo
{
public static void main(String[] args)
{
//Outer.Inner out=new Outer().new Inner();
System.out.println(Outer.Inner.num);
Outer out=new Outer();
out.out();
}
}
包package
對類檔案進行分類管理,給類提供多層命名空間
寫在程式檔案的第一行
類名的全稱是 包名.類名
包名也是一種封裝形式
編譯的時候:javac -d 要存放的檔案夾路徑 類名.java
運作的時候:java 包名.類名
要存放的檔案夾路徑:.表示存在目前檔案夾
不同包之間通路,類一定要public,函數也要public
不同包之間,函數加了protectde隻有子類才能通路
1 關鍵字import用來導入包
import packb.* 表示導入packb檔案夾下面的類
在類名上面導入了包,建立對象時就不用重複寫包名了,但是當導入的包裡面有同名的類時,要在類名前寫上包名
2 把包壓縮:jar
切換到包所在的檔案夾
壓縮: jar -cf haha.jar pack packa packb
-cf為建立一個檔案夾并指定檔案夾的名稱
haha.jar把包壓縮後存放的地方
pack packa packb是包
運作haha.jar裡面的類檔案: 先指定classpath路徑,多了一層haha.jar
setclasspath=c:\myclass\haha.jar
運作:java pack.PackDemo
解壓包: jar -xf haha.jar
3 把dos指令行裡面的資料存儲在指定檔案夾中的方法
例子:把C槽目錄下的資訊存儲在1.txt
C:\myclass>dir>1.txt
------- android教育訓練、java教育訓練、期待與您交流!----------