Java-面向?qū)ο?/h1>

核心思想:找適合的對象做適合的事情蜗字。

自定義類

自定義類的三步驟:
1伸眶、自定義類
class 類名 {
// 事物的公共屬性使用變量描述
// 事物的公共行為使用函數(shù)描述
}
2、通過類創(chuàng)建對象
類名 變量名 = new 類名();
3、訪問(設(shè)置)對象的屬性或調(diào)用對象的功能事哭。

抽象類 用abstract修飾

應(yīng)用場景:
描述一類事物的時候,該種事物存在某種行為瓜富,但是該行為目前不是具體的行為鳍咱,那么就可以抽取該種行為的聲明,但是不去實現(xiàn)該行為与柑,這種行為就叫抽象行為谤辜,該類就叫抽象類
好處: 強制要求子類必須實現(xiàn)基類的抽象方法。
注意事項:

  1. 如果一個函數(shù)沒有方法體价捧,該函數(shù)必須使用abstract修飾丑念,把該函數(shù)修飾成抽象的函數(shù)。
  2. 如果一個類中出現(xiàn)了抽象的函數(shù)结蟋,那么該類也必須使用abstract修飾脯倚。
  3. 如果一個非抽象類繼承了一個抽象類,那么必須把抽象類的所有抽象方法都實現(xiàn)嵌屎。
  4. 抽象類中可以存在非抽象的方法推正。
  5. 抽象類可以不存在抽象方法恍涂。
  6. 抽象類不能創(chuàng)建對象。
  7. 抽象類是存在構(gòu)造方法的植榕,其構(gòu)造方法是提供給其子類創(chuàng)建對象使用的再沧。

匿名對象

定義:沒有引用類型變量指向的對象。
需要注意的事項:

  • 一般不會給匿名對象賦予屬性值内贮,因為永遠無法取到产园。
  • 兩個匿名對象永遠都不可能是同一個對象。
    應(yīng)用場景:
  • 當(dāng)一個對象需要調(diào)用一個方法夜郁,調(diào)用完這個對象就不再使用了什燕,可以使用匿名對象,節(jié)省內(nèi)存空間竞端。
  • 可以作為實參調(diào)用一個函數(shù)屎即。

面向?qū)ο蟮娜筇卣鳎悍庋b、繼承事富、多態(tài)

封裝

權(quán)限修飾符:控制變量的可見范圍技俐。

  • public 修飾的成員變量或者方法任何人都可以直接訪問。
  • private 修飾的成員變量或者方法只能本類進行直接訪問统台。
    封裝的步驟:
  1. 使用private修飾需要封裝的屬性雕擂。
  2. 提供一個公共的方法設(shè)置或者獲取該私有的成員屬性。
    命名規(guī)范:
    set屬性名();
    get屬性名();
    封裝的好處:
  • 提高數(shù)據(jù)安全性
  • 操作簡單
  • 隱藏了實現(xiàn)

繼承:is a 關(guān)系

繼承的格式:
class 類名1 extends 類名2 {
// 類內(nèi)容
}
類名1稱為子類贱勃,類名2稱為基類(父類/超類)井赌;
注意事項:

  • 只有真正存在繼承關(guān)系的時候才能使用繼承。
  • 基類私有的成員不能被繼承贵扰。
  • 基類的構(gòu)造函數(shù)不能被繼承仇穗。
  • 創(chuàng)建子類對象時默認會先調(diào)用父類無參的構(gòu)造函數(shù)。

方法重寫: 子類中重寫父類的方法
什么時候使用方法重寫: 父類的功能不能滿足子類的需求時戚绕。
方法重寫的注意事項:

  1. 方法名和形參列表必須一致纹坐。
  2. 子類的權(quán)限修飾符必須要大于或者等于父類方法的權(quán)限修飾符。
  3. 子類的返回值類型必須要小于或等于父類的返回值類型舞丛。
    4.子類拋出的異常類型必須要小于或等于父類拋出的異常類型耘子。

多態(tài)

定義:父類的引用類型變量指向了子類的對象。
前提:必須存在繼承或者實現(xiàn)關(guān)系瓷马。
注意事項:

  1. 多態(tài)情況下拴还,子父類存在同名的成員時,訪問的都是父類的成員欧聘,只有當(dāng)成員為非靜態(tài)方法時,訪問的是子類方法端盆。
  2. 多態(tài)情況下怀骤,不能訪問子類特有的成員费封。
    多態(tài)應(yīng)用:
  3. 用于形參類型時,可以接收更多類型的數(shù)據(jù)蒋伦。
  4. 用于返回值類型時弓摘,可以返回更多類型的數(shù)據(jù)。

構(gòu)造函數(shù)

作用:給對應(yīng)的對象初始化痕届。
定義格式:
修飾符 函數(shù)名() {
函數(shù)體韧献;
}
注意細節(jié):

  • 構(gòu)造函數(shù)沒有返回值。
  • 構(gòu)造函數(shù)函數(shù)名必須要與類名一樣研叫。
  • 構(gòu)造函數(shù)是在創(chuàng)建對象的時候自動調(diào)用的锤窑,不能手動調(diào)用。
  • 沒有給類寫構(gòu)造方法時嚷炉,那么Java編譯器在編譯時會為該類添加一個無參的構(gòu)造函數(shù)渊啰。
  • 構(gòu)造函數(shù)可以以函數(shù)重載的形式存在多個的,創(chuàng)建對象時只調(diào)用參數(shù)對應(yīng)的那個申屹。

代碼塊

  • 構(gòu)造代碼塊
  • 局部代碼塊
  • 靜態(tài)代碼塊

構(gòu)造代碼塊

作用:給對象進行統(tǒng)一的初始化绘证。
格式:
{
構(gòu)造代碼塊;
}
放的位置:在類的任何一個方法外面哗讥,和類的屬性位置平齊嚷那。
注意:

  • 構(gòu)造代碼塊中的代碼在編譯時,會放在構(gòu)造函數(shù)中執(zhí)行杆煞,而且是放在前面執(zhí)行魏宽,構(gòu)造函數(shù)中的代碼最后執(zhí)行。
  • 成員變量的顯示賦值和代碼塊中的賦值索绪,是按照代碼書寫的順序執(zhí)行的湖员。

局部代碼塊

大括號位于方法內(nèi),一般不會用瑞驱。

靜態(tài)代碼塊

this 關(guān)鍵字

代表所屬函數(shù)的調(diào)用者娘摔,即誰調(diào)用就this就指向誰。
作用:

  • 指向它的調(diào)用者唤反。
  • 在一個構(gòu)造函數(shù)中凳寺,通過this(形參);方式,調(diào)用本類中的其他構(gòu)造函數(shù)彤侍。
    注意:
  1. this(形參); 必須放在第一行肠缨。
  2. 不能調(diào)用本構(gòu)造函數(shù),否則出現(xiàn)死循環(huán)盏阶。

super 關(guān)鍵字

super關(guān)鍵字代表了父類空間的引用晒奕。
作用:

  1. 子類中存在著和父類同名的成員時,默認訪問子類的成員,通過super關(guān)鍵字指定訪問父類的成員脑慧。
  2. 創(chuàng)建子類對象時魄眉,默認會調(diào)用父類無參的構(gòu)造函數(shù),通過super指定調(diào)用父類帶參的構(gòu)造函數(shù)闷袒。

instanceof 關(guān)鍵字

判斷一個對象是否屬于指定的類型坑律。
使用前提:判斷的對象與指定的類別必須要存在繼承或?qū)崿F(xiàn)的關(guān)系。
使用格式:
對象 instanceof 類名

final 修飾符

用法:

  1. 修飾基本類型的變量時囊骤,該變量初始化后其值不可再次修改晃择。
  2. 修飾引用類型的變量時,該變量不能改變其指向的對象也物。
  3. 修飾一個方法時宫屠,該方法不能被重寫。
  4. 修飾一個類時焦除,該類不能被繼承激况。
    常量的修飾符一般為: public static final

static 修飾符

應(yīng)用場景:當(dāng)變量需要被所有對象共享時使用。
作用:

  1. static修飾符修飾的成員變量膘魄,在實例化時不會每個對象都維護一份乌逐,而是只在數(shù)據(jù)共享
    區(qū)維護一份,所有的同類型的對象共享创葡。
    靜態(tài)成員變量的訪問方式:
  • 點 對象.變量名
  • 類直接訪問 類名.變量名 (非靜態(tài)成員變量不能使用此方式訪問)
  1. static修飾符修飾方法時
    訪問方式1:使用對象進行訪問
    對象名.靜態(tài)函數(shù)名();
    訪問方式2:類名進行訪問
    類名.靜態(tài)函數(shù)名字
    注意事項:
  • 靜態(tài)函數(shù)可以使用對象或類名進行訪問浙踢,而非靜態(tài)函數(shù)不能使用類名訪問。
  • 靜態(tài)函數(shù)內(nèi)可以直接訪問靜態(tài)成員灿渴,不能直接訪問非靜態(tài)成員洛波。
  • 非靜態(tài)函數(shù)可以對靜態(tài)成員和非靜態(tài)成員都可以直接訪問。
  • 靜態(tài)函數(shù)不能出現(xiàn)this和super關(guān)鍵字骚露。
    靜態(tài)數(shù)據(jù)的生命周期:
  1. 靜態(tài)的數(shù)據(jù)是在類文件加載時執(zhí)行一次蹬挤,優(yōu)先于對象存在的。
    靜態(tài)成員數(shù)據(jù)存儲的位置:
    靜態(tài)成員數(shù)據(jù)存在方法區(qū)的數(shù)據(jù)共享區(qū)棘幸,而非靜態(tài)成員變量存儲在堆內(nèi)存中焰扳。

main函數(shù)

格式:
public static void main() {
代碼區(qū);
}
解讀:
public:公共的误续,權(quán)限很大吨悍,在任何情況下都可以訪問。
static: 靜態(tài)蹋嵌,可以讓jvm調(diào)用main函數(shù)時育瓜,不需要通過對象調(diào)用,直接調(diào)用既可栽烂。

設(shè)計模式

單例設(shè)計模式(餓漢單例設(shè)計模式)

解決的問題:保證一個類在內(nèi)存中只有一個對象躏仇。
設(shè)計模式步驟:

  1. 私有化構(gòu)造函數(shù)
  2. 聲明本類的引用類型變量(private static)恋脚,并使用該變量指向本類對象,即在本類中實例化本身钙态。
  3. 提供一個公共的靜態(tài)的方法獲取本類的對象慧起。
class Single {
   private static Single s = new Single(); // 在本類中實例化本身
  private Single { }   // 私有化構(gòu)造函數(shù)
  public static Single getInstance () { // 提供一個公共靜態(tài)方法獲取本類對象
    return s;
  }
}
// 使用
Single s1 = Single.getInstance();

單例設(shè)計模式(懶漢單例設(shè)計模式)

步驟:

  1. 私有化構(gòu)造函數(shù)
  2. 聲明本類的引用類型變量菇晃,不創(chuàng)建本類的對象
  3. 提供公共靜態(tài)的方法獲取本類對象册倒,返回之前,先判斷是否創(chuàng)建了本類對象磺送,若沒有創(chuàng)建則創(chuàng)建驻子,若已經(jīng)創(chuàng)建了,則直接返回估灿。
class Single {
   private static Single s = null; // 在本類中實例化本身
  private Single { }   // 私有化構(gòu)造函數(shù)
  public static Single getInstance () { // 提供一個公共靜態(tài)方法獲取本類對象
      if (s == null) {
          s = new Single();
      }
      return s;
  }
}
// 使用
Single s1 = Single.getInstance();

注意:推薦使用餓漢單例設(shè)計模式崇呵,因為懶漢設(shè)計模式可能存在線程安全問題。

接口

為了拓展功能馅袁。
定義格式:
interface 接口名 {

}
注意事項:

  • 接口是一個特殊的類域慷。
  • 接口中的成員變量默認修飾符為:public static final,就是說接口中的成員變量都是常量汗销。
  • 接口中的方法都是抽象的方法犹褒,默認修飾符為:public abstract。
  • 接口不能創(chuàng)建對象弛针,因為接口中的方法是抽象叠骑,成員變量時常量。
  • 接口是沒有構(gòu)造方法的削茁。
  • 接口是給類去使用的宙枷, 非抽象類實現(xiàn)一個接口時,必須把類中的所有方法都實現(xiàn)茧跋。
    接口的作用:
  1. 程序的解耦慰丛。
  2. 定義約束規(guī)范。
  3. 拓展功能瘾杭。
    類使用接口格式:
    class 類名 implements 接口名 {
    // 代碼
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者

  • 序言:七十年代末诅病,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子富寿,更是在濱河造成了極大的恐慌睬隶,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件页徐,死亡現(xiàn)場離奇詭異苏潜,居然都是意外死亡座每,警方通過查閱死者的電腦和手機适肠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門卓缰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人阳仔,你說我怎么就攤上這事≌岚” “怎么了句各?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長巧鸭。 經(jīng)常有香客問我瓶您,道長,這世上最難降的妖魔是什么纲仍? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任呀袱,我火速辦了婚禮,結(jié)果婚禮上郑叠,老公的妹妹穿的比我還像新娘夜赵。我一直安慰自己,他們只是感情好乡革,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布寇僧。 她就那樣靜靜地躺著,像睡著了一般沸版。 火紅的嫁衣襯著肌膚如雪嘁傀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天推穷,我揣著相機與錄音心包,去河邊找鬼。 笑死馒铃,一個胖子當(dāng)著我的面吹牛蟹腾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播区宇,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼娃殖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了议谷?” 一聲冷哼從身側(cè)響起炉爆,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎卧晓,沒想到半個月后芬首,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡逼裆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年郁稍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胜宇。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡耀怜,死狀恐怖恢着,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情财破,我是刑警寧澤掰派,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站左痢,受9級特大地震影響靡羡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抖锥,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一亿眠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧磅废,春花似錦、人聲如沸荆烈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽憔购。三九已至宫峦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間玫鸟,已是汗流浹背导绷。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留屎飘,地道東北人妥曲。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像钦购,于是被迫代替她去往敵國和親檐盟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容