首頁 >Java >java教程 >JAVA入門系統教學(七)物件導向(封裝2)

JAVA入門系統教學(七)物件導向(封裝2)

php是最好的语言
php是最好的语言原創
2018-08-10 10:56:321627瀏覽

物件導向(封裝2)

#1.Java中的內部類別

   1)什麼是內部類別呢:內部類別( Inner Class )就是定義在另一個類別裡面的類別。與之對應,包含內部類別的類別稱為外部類別。

   2)為什麼要定義一個類別在另一個類別裡面呢

        內部類別的主要功能如下:

        1> 內部類別提供了更好的封裝,,內部類別內部類別可以隱藏在外部類別之內,不允許同一個套件中的其他類別存取該類別

        2> 內部類別的方法可以直接存取外部類別的所有數據,包括私有的資料

        3> 內部類別所實現的功能使用外部類別同樣可以實現,只是有時使用內部類別更方便

   3)內部類別有幾種呢:成員內部類別、靜態內部類別、方法內部類別、匿名內部類別JAVA入門系統教學(七)物件導向(封裝2)

2.Java中的成員內部類別

內部類別中最常見的就是成員內部類別,也稱為普通內部類別。我們來看如下程式碼:JAVA入門系統教學(七)物件導向(封裝2)

從上面的程式碼我們可以看到,成員內部類別的使用方法:

1、 Inner 類別定義在Outer 類別的內部,相當於Outer 類別的成員變數的位置,Inner 類別可以使用任意存取控制符,如public 、 protected 、 private 等

2、 Inner 類別中定義的test() 方法可以直接存取Outer 類別中的數據,而不受存取控制符的影響,例如直接存取Outer 類別中的私有屬性a

3、 定義了成員內部類別後,必須使用外部類別物件來建立內部類別對象,而不能直接去new 一個內部類別對象,即:內部類別物件名稱= 外部類別物件.new 內部類別( );

4、 編譯上面的程式後,會發現產生了兩個. class 文件

其中,第二個是外部類別的.class 文件,第一個是內部類別的.class 文件,即成員內部類別的.class 文件總是這樣:外部類別名稱$內部類名.class

另外,友情提示哦:

1、 外部類別是不能直接使用內部類別的成員和方法滴JAVA入門系統教學(七)物件導向(封裝2)

可先建立內部類別的對象,然後透過內部類別的對象來存取其成員變數和方法。

2、 如果外部類別和內部類別具有相同的成員變數或方法,內部類別預設存取自己的成員變數或方法,如果要存取外部類別的成員變量,可以使用 this 關鍵字。如:JAVA入門系統教學(七)物件導向(封裝2)

範例:在編輯器中定義了成員內部類別 Inner ,並在內部類別的 show 方法中輸出外部類別和內部類別的屬性值。 JAVA入門系統教學(七)物件導向(封裝2)

3. Java中的靜態內部類別

    靜態內部類別是static 修飾的內部類別,這種內部類別的特徵是:

    1) 靜態內部類別不能直接存取外部類別的非靜態成員,但可以透過new 外部類別().成員的方式存取 

   2) 如果外部類別的靜態成員與內部類別的成員名稱相同,可透過「類別名稱.靜態成員」存取外部類別的靜態成員;如果外部類別的靜態成員與內部類別的成員名稱不相同,則可透過「成員名稱」直接呼叫外部類別的靜態成員

   3) 建立靜態內部類別的物件時,不需要外部類別的對象,可以直接建立 

      內部類別物件名稱= new 內部類別();

例如範例:JAVA入門系統教學(七)物件導向(封裝2)


4. Java中的方法內部類別


   方法內部類別就是內部類別定義在外部類別的方法中,方法內部類別只在此方法的內部可見,即只在該方法內可以使用。

JAVA入門系統教學(七)物件導向(封裝2)


PS:由於方法內部類別不能在外部類別的方法以外的地方使用,因此方法內部類別不能使用存取控制符和static 修飾符。

JAVA入門系統教學(七)物件導向(封裝2)


5. Math類別的random方法

###    範例:猜數字遊戲###

    JAVA入門系統教學(七)物件導向(封裝2)

6. 製作文件說明

package example.make_api;

/**
 * 当前这个ArrayTool这个类是针对数组操作的工具类,里面提供了遍历数组以及获取数组的最大值和
 * 查找数组中第一次出现的索引这些功能
 * @author 梦竹
 * @version V1.0
 */
public class ArrayTool {
	/**
	 * 无参构造私有化的目的,是为了不让外界创建对象
	 */
	private ArrayTool() {
		
	}
	/**
	 * 当前这个方法是针对数组遍历的功能
	 * @param arr  是需要被遍历的数组
	 */
	public static void printArray(int[] arr) {
		System.out.print("[");
		for(int x = 0 ; x < arr.length ;x ++) {
			//判断
			if(x==arr.length-1) {
				System.out.println(arr[x]+"]");
			}else {
				System.out.print(arr[x]+", ");
			}
		}
	}
	/**
	 * 当前getMax方法是获取数组中最大值的方法
	 * @param arr  需要遍历的数组
	 * @return     返回到就是数组中的最大值
	 */
	public static int getMax(int[] arr) {
		//定义一个参照物,假设为最大值
		int max = arr[0] ;
		//遍历其他元素
		for(int x = 1; x < arr.length ;x ++) {
			//判断
			if(arr[x] > max) {
				max = arr[x] ;
			}
		}
		return max ;
	}
	/**
	 * 当前这个方法是查找数组的某个元素在数组中第一次出现的索引
	 * @param arr  
	 * @param value
	 * @return
	 */
	public static int getIndex(int[] arr,int value) {
		//假设找不到
		int index = -1 ;
		//遍历数组
		for(int x = 0 ; x < arr.length ; x ++) {
			//判断
			if(arr[x] == value) {
				//将当前x索引赋值给index
				index = x ;
				break ;
			}
		}
		return index ;
	}
}
package example.make_api;
/**
 * 需求:自定义一个数组,遍历数组
 * 制作文档说明书:
 * 		可以定义一个ArrayTool,数组操作的工具类
 * 		在工具类,必须文档注释,来让解析成文档
 * 		在数组工具类ArrayTool,提供遍历功能,获取最大值的,查找数组中某个元素第一次出现的索引
 * 
 * 
 * @author Administrator
 *
 */
public class ArrayDemo {

	public static void main(String[] args) {
		
		//定义数组,静态初始化
		int[] arr = {57,69,13,24,80} ;
		
		//测试
		//遍历功能
		ArrayTool.printArray(arr);
		//最大值
		int max = ArrayTool.getMax(arr) ;
		System.out.println("最大值是:"+max);
		//求元素在数组中第一次参出现的索引
		int index = ArrayTool.getIndex(arr, 13) ;
		System.out.println("索引是:"+index);
	}	

}

此時找到兩個class檔案

Tool中刪除package example.make_api

JAVA入門系統教學(七)物件導向(封裝2)

Win R呼出dos

JAVA入門系統教學(七)物件導向(封裝2)

##END

相關文章:

JAVA入門系統教學(五)基礎語法(3)

#JAVA入門系統教學(六)物件導向(封裝)######

以上是JAVA入門系統教學(七)物件導向(封裝2)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn