1. 程式人生 > >[javase學習筆記]-6.5 類類型參數與匿名對象

[javase學習筆記]-6.5 類類型參數與匿名對象

需要 public num trac article 我們 品牌 類類型 color

這一節我們來說說類類型參數和匿名對象.

我們繼續用之前的小汽車類吧

class Car
{
	int num;//這是輪胎數屬性
	String color;//這是顏色屬性
	String brand;//這是品牌性
	
	void start()//啟動行為
	{
		System.out.println("小汽車已啟動");
	}
	void run()//這就是執行行為
	{
		System.out.println(num+"..."+color+"..."+brand);
	}
}
對於我們的Car類,假設我們要創建多個同樣的小汽車我們應該怎麽做呢?

對於我們剛開始學習的人,我們肯定會用這種操作:

class CarDemo
{
	public static void main(String[] args)
	{
		//定義第一輛車
		Car myCar1 = new Car();
		myCar1.num = 4;
		myCar1.color = "red";
		myCar1.brand = "BWM";
		//定義第二輛車
		Car myCar2 = new Car();
		myCar1.num = 4;
		myCar1.color = "red";
		myCar1.brand = "BWM";
		//定義第三輛甚至很多其它時,僅僅能這樣不斷的寫代碼
	}
}

我們能夠說說,上面的代碼確實非常爛了,我們做了非常多同樣的操作,假設我們要定義非常多同樣的車時,代碼的復用性確實太差了.

那麽我們該怎麽做呢,非常顯然,我們必需要提高代碼的復用性,也就是說我們能夠把同樣功能的代碼封裝起來以反復使用,那麽就可這樣做:

class CarDemo
{
	public static void main(String[] args)
	{
		//定義第一輛車
		Car myCar1 = new Car();
		assemble(myCar1);
		System.out.println("myCar1是一輛"+myCar1.color+"顏色的"+myCar1.brand+"品牌的小汽車,它有"+myCar1.num+"個輪子");
		//定義第二輛車
		Car myCar2 = new Car();
		assemble(myCar2);
		System.out.println("myCar2是一輛"+myCar2.color+"顏色的"+myCar2.brand+"品牌的小汽車,它有"+myCar2.num+"個輪子");
		//定義第三輛能夠直接復用assemble(Car car)這個組裝功能就可以
	}
	//我們能夠封閉一個汽車組裝的功能,然後調用這個功能就能夠
	public static void assemble(Car car)//類類型的參數一定要指向對象,要麽就是null
	{
		car.num = 4;
		car.color = "red";
		car.brand = "BWM";
	}
}
從上面的代碼我們非常easy就實現了同樣車輛的組裝,提高了代碼的復用性,同一時候我們註意到,封裝的功能的參數是一個類類型的形式參數,它指向的是一個Car類型的對象.

我們來看一下上面代碼的結果:

技術分享

我們從結果上看到確實實現了我們想要實現的同樣汽車.

我們再簡單來看一下比較特殊的情況,就是匿名對象.

匿名對象顧名思義就是沒有名字的對象

new Car();//匿名對象,事實上就是定義對象的簡寫格式

那麽匿名對象一般怎麽用呢?

我們先看一樣例,比方我們要創建一輛車,並執行run方法,那麽我們會這樣做:

Car c = new Car();//這個是有名對象
c.run();
對於上面這樣的情況,我們能夠簡寫為例如以下一句代碼:

new Car().run;
那麽我們就看到匿名對象的第一種使用方法:

當對象對方法僅進行一次調用的時候,就能夠簡化成匿名對象.

我們看一段代碼:

class CarDemo
{
	public static void main(String[] args)
	{
		new Car().num = 5;
		new Car().color = "green";
		new Car().run();
	}
}

我們看一下結果:

技術分享

對於這三句語句,每運行一名,在堆內存中都會創建新的空間,而不是僅僅創建一個對象.當運行以下的一句語句時,前面的語句已經被釋放了,所以上面的前兩句代碼沒有意義.可是最後一句會被運行,由於該對象對方法僅僅進行了一次調用.

匿名對象的另外一種使用方法:

匿名對象能夠作為實際參數進行傳遞.

比方前面我們的方法assemble(Car car),我們能夠這樣使用:

assemble(new Car());

[javase學習筆記]-6.5 類類型參數與匿名對象