【Java貓說】Java對象的行爲

閱讀本文約「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方法及傳參的一些問題

相關文章
相關標籤/搜索