閱讀本文約「2分鐘」segmentfault
對象的行爲,這裏的對象即上一章中的類吧(淺意)多線程
狀態影響行爲,行爲影響狀態!線程
這是一個使人深思的話題了。設計
同一類型的每一個對象可以有不一樣的方法行爲嗎?code
仔細想一下實際上是能夠的,任一類的每一個實例都帶有相同的方法,可是方法能夠根據實例變量的值來表現不一樣的行爲。對象
這裏舉例來講的話,Song這個類有兩個實例變量,而play()方法會播放其中一個實例變量指定的歌曲名。但其方法是相同的。內存
void play(){ System.out.println(title); } //main Song song = new Song(); song.setTitle("同一首歌"); song.setArtist("Myself"); Song song1 = new Song(); song1.setTitle("你的微笑"); song1.setArtist("MySelf");
因爲不一樣的程序設計背景和我的喜愛,你可能會用實參或形參來調用傳給方法的參數。get
方法會運用形參,調用的一方會傳入實參。編譯器
重點是:若是某個方法須要參數,你就必定得傳東西給他,那個東西得是適當類型的值。it
且若是你將一個方法聲明有返回值,你就必須返回所聲明類型的值。
固然,若是你有用過一些成熟的編譯器,他們也會主動拒絕你返回錯誤的類型。
方法是能夠傳入多個參數的,若是方法有參數,你必定要以正確數量、類型和順序來傳遞參數。
Java是經過值傳遞的,也就是說經過拷貝傳遞。
//聲明一個int類型的變量並賦值爲7,表明7的字節組合會放進 //稱爲x的變量中。 int x = 7; //聲明一個有int參數的方法,參數名稱爲z void go(int z){ } //以x爲參數傳入go()這個方法,x的字節組合會被拷貝並裝 //進z中 foo.go( x ); //在方法中改變z的值,此時的x的值不會改變! //傳入z的只是一個拷貝 //方法沒法改變調用方所傳入的參數 void go ( int z ){ z = 0; }
這裏有一些要點須要你注意!
——類定義對象所知及所爲
——對象所知是實例變量
——對象所爲者是方法
——方法可依據實例變量來展示不一樣的行爲
——方法可以使用參數,這表明你能夠傳入一個或多個值的方法
——傳給方法的參數必須符合聲明時的數量、順序及類型
——傳入與傳出方法的值類型能夠隱含地放大或明確地縮小
——方法必須聲明返回類型,使用void類型表明方法不返回任何東西
——若是方法聲明瞭非void的返回類型,那就必定要返回與聲明類型相同的值。
本文已轉載我的技術公衆號:UncleCatMySelf
歡迎留言討論與點贊
上一篇推薦:【Java貓說】Java多線程以內存可見性(下篇)
下一篇推薦:【Java貓說】關於Java方法及傳參的一些問題