對(duì)象與類(lèi)
?? ? ? ?類(lèi)是所有面向?qū)ο蟮恼Z(yǔ)言的共同特征昌妹,所有面向?qū)ο蟮恼Z(yǔ)言都提供了這種類(lèi)型背零。類(lèi)是現(xiàn)實(shí)世界或思維世界中的實(shí)體在計(jì)算機(jī)中的反映哺壶,它將數(shù)據(jù)以及這些數(shù)據(jù)上的操作封裝在一起躲撰。對(duì)象是具有類(lèi)類(lèi)型的變量。類(lèi)是對(duì)象的抽象弧圆,而對(duì)象是類(lèi)的具體實(shí)例赋兵。類(lèi)是抽象的,不占用內(nèi)存搔预,而對(duì)象是具體的霹期,占用存儲(chǔ)空間。類(lèi)是用于創(chuàng)建對(duì)象的藍(lán)圖拯田,它是一個(gè)定義包括在特定類(lèi)型的對(duì)象中的方法和變量的軟件模板历造。
?? 面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言必須有描述對(duì)象及其相互之間關(guān)系的語(yǔ)言成分。這些程序設(shè)計(jì)語(yǔ)言可以歸納為以下幾類(lèi):系統(tǒng)中一切事物皆為對(duì)象船庇;對(duì)象是屬性及其操作的封裝體吭产;對(duì)象可按其性質(zhì)劃分為類(lèi),對(duì)象成為類(lèi)的實(shí)例;實(shí)例關(guān)系和繼承關(guān)系是對(duì)象之間的靜態(tài)關(guān)系;消息傳遞是對(duì)象之間動(dòng)態(tài)聯(lián)系的唯一形式顶猜,也是計(jì)算的唯一形式;方法是消息的序列邑蒋。
? ? 一個(gè)對(duì)象變量并沒(méi)有實(shí)際包含一個(gè)對(duì)象姓蜂,而僅僅引用一個(gè)對(duì)象。在java中寺董,任何對(duì)象變量的值都是對(duì)存儲(chǔ)在另外一個(gè)地方的一個(gè)對(duì)象的引用覆糟。new操作符的返回值也是一個(gè)引用刻剥。
? ??之前的類(lèi)一直都包含了簡(jiǎn)單的main方法遮咖,而JavaEE程序設(shè)計(jì)大多數(shù)類(lèi)是沒(méi)有main方法,這些類(lèi)有自己的實(shí)例域和實(shí)例方法造虏,一個(gè)完整的Java程序是由若干類(lèi)組合在一起御吞,其中只有一個(gè)類(lèi)由main方法。
?1.靜態(tài)域:
? ? 如果將域定于為static漓藕,那么每個(gè)類(lèi)中只有一個(gè)這樣的域
????而每個(gè)對(duì)象對(duì)于所有的實(shí)例域卻都有自己的一份拷貝
? ? 也就是說(shuō)陶珠,它屬于類(lèi),而不屬于任何獨(dú)立的對(duì)象
? ? 靜態(tài)域被稱(chēng)為類(lèi)域
2.靜態(tài)常量:
? ?改變靜態(tài)常量:通過(guò)本地方法可以繞過(guò)Java語(yǔ)言的存儲(chǔ)控制機(jī)制
3.靜態(tài)方法:
? ? 靜態(tài)方法是一種不能向?qū)ο髮?shí)施操作的方法
? ? 也就是沒(méi)有隱式的參數(shù)
? ? 可以認(rèn)為靜態(tài)方法是沒(méi)有this參數(shù)的方法
? ? 靜態(tài)方法可以訪問(wèn)自身類(lèi)中的靜態(tài)域享钞,該方法也可以省略關(guān)鍵字static
? ? 3.1使用靜態(tài)域有兩種情況:
????? ? 一個(gè)方法不需要訪問(wèn)對(duì)象狀態(tài)揍诽,其所需參數(shù)都是通過(guò)顯示參數(shù)提供
????? ? 一個(gè)方法只需要訪問(wèn)類(lèi)的靜態(tài)域
4.工廠方法:
? ? 通過(guò)靜態(tài)工廠方法來(lái)構(gòu)造對(duì)象
Java程序設(shè)計(jì)語(yǔ)言總是采用按值傳遞,也就是說(shuō)栗竖,方法得到的是所有參數(shù)值的一個(gè)拷貝暑脆。
1.方法不能修改一個(gè)基本數(shù)據(jù)類(lèi)型的參數(shù)(數(shù)值型或布爾型)
2.方法可以改變一個(gè)對(duì)象參數(shù)的狀態(tài),方法得到的是對(duì)象引用的拷貝狐肢,不是對(duì)象的拷貝添吗,對(duì)象引用及其他拷貝同時(shí)引用同一個(gè)對(duì)象。