[javase學習筆記]-6.5 類類型參數與匿名對象
阿新 • • 發佈:2017-08-02
需要 public num trac article 我們 品牌 類類型 color
從上面的代碼我們非常easy就實現了同樣車輛的組裝,提高了代碼的復用性,同一時候我們註意到,封裝的功能的參數是一個類類型的形式參數,它指向的是一個Car類型的對象.
這一節我們來說說類類型參數和匿名對象.
我們繼續用之前的小汽車類吧
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"; } }
我們來看一下上面代碼的結果:
我們從結果上看到確實實現了我們想要實現的同樣汽車.
我們再簡單來看一下比較特殊的情況,就是匿名對象.
匿名對象顧名思義就是沒有名字的對象
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 類類型參數與匿名對象