3. Java面向對象編程


類與對象[1]

  • Java是面向對象的
    • 匯編語言(面向機器)—— c語言(面向過程)—— java語言(面向對象)
  • 類和對象的關系
    • 類是抽象的倘零,代表一類事物板驳,比如人類饰潜,貓類...
    • 對象是具體的,代表一個具體事物
      類是對象的模板俄周,對象是類的一個個體星澳,實例
    A[把貓的特征提取出來] --> B[貓類]
    B --> C[對象/實例]
    B --> D[對象/實例]
    B --> E[...]

定義類

package包名疚顷;
class類名 extends父類 implements接口名{
    成員變量;
    構造方法;
    成員方法腿堤;
}

成員變量

成員變量是類的一個組成部分阀坏,一般是基本數(shù)據(jù)類型,也可是是引用類型

創(chuàng)建對象

  • 先聲明再創(chuàng)建
    • 對象申明:類名 對象名
    • 對象創(chuàng)建:對象名=new 類名()
  • 一步到位法
    • 對象名=new 類名()

訪問對象的成員變量

對象名.變量名;

成員方法

  • 介紹
    • 比如人類释液,除了有一些屬性外(成員變量表示的 年齡全释,姓名...)装处,還有一些行為误债,如說話,跑步...妄迁,通過學習還會做算術題
  • 成員方法/函數(shù)--定義
    • 參數(shù)列表:表示成員函數(shù)輸入
    • 數(shù)據(jù)類型(返回類型):表示成員函數(shù)輸出
    • 函數(shù)主體:表示為了實現(xiàn)某一功能代碼塊
public 返回數(shù)據(jù)類型 方法名(參數(shù)列表)
{
      語句;//方法(函數(shù))主體
}
  • 成員方法--申明
public       int         test(int a);
//訪問修飾符  數(shù)據(jù)類型  函數(shù)名(參數(shù)列表)寝蹈;

構造方法

  • 特點
    • 方法名和類名相同
    • 沒有返回值
    • 創(chuàng)建一個類的新對象時,系統(tǒng)會自動調(diào)用該類的構造方法登淘,完成對新對象的初始化
    • 一個類可以有多個構造方法
  • 默認構造方法
    • 如果沒寫箫老,系統(tǒng)默認 public Person(){}
  • This
    • this是屬于對象的,不是屬于類的

靜態(tài)變量與靜態(tài)方法

靜態(tài)變量

  • 定義語法
訪問修飾符 static 數(shù)據(jù)類型 變量名;
//static表示靜態(tài)變量黔州,因此它可以被任何一個對象訪問 

2)訪問類變量

類名.類變量名
//或者
對象名.類變量名

靜態(tài)方法

  • 定義語法:
訪問修飾符 static 數(shù)據(jù)返回類型 方法名(){}
  • 訪問類方法:
類名.類方法名
//或者
對象名.類方法名
  • java規(guī)則:
    • 靜態(tài)變量原則上用靜態(tài)方法去訪問
    • 靜態(tài)方法只能訪問靜態(tài)變量
    • 非靜態(tài)方法耍鬓,既能訪問靜態(tài)變量,也能訪問實例變量
  • 總結:
    • 靜態(tài)變量是與類相關的流妻,公共的屬性
    • 實例變量是屬于每個對象個體的屬性

四大特征

1. 抽象(可以不考慮)

定義一個類時牲蜀,將一類事物的共同屬性和行為提取出來,形成一個物理模型绅这,這種研究方法稱為抽象

2. 封裝

將抽象出來的數(shù)據(jù)和對數(shù)據(jù)的操作封裝在一起涣达,數(shù)據(jù)被保護在內(nèi)部,程序的其他部分只有通過被授權的操作(成員方法)证薇,才能對數(shù)據(jù)進行操作

  • 訪問控制修飾符
    • 公開級別度苔,public,對外公開
    • 受保護級別浑度,protected寇窑,對子類和同一個包中的類公開
    • 默認級別,無修飾符箩张,向同一個包的類公開
    • 私有級別甩骏,private,只有類本身可以訪問伏钠,不對外公開
訪問級別 訪問控制修飾符 同類 同包 子類 不同包
公開 public
受保護 protected
默認
私有 private
    • 三大作用
      • 區(qū)分相同名字的類
      • 管理類
      • 控制訪問范圍
    • 打包命令
      • package com.xiaoming
      • 命名規(guī)范: 小寫字母

3. 繼承

解決代碼復用:在父類中定義相同的屬性和方法横漏,所有的子類不需要重新定義這些屬性和方法,只需通過extends語句來聲明繼承
class 子類 extends父類
這樣子類就會自動擁有父類定義的部分屬性和方法

  • 注意事項
    • 除了 private屬性/方法熟掂,其他3類的屬性/方法都能被繼承
    • 一個子類只能繼承一個父類
    • Java所有類都是object的子類
    • JDK6中有202個包缎浇,3777個類、借口赴肚、異常素跺、枚舉二蓝、注釋和錯誤
    • 多查jdk幫助文檔
  • 方法重載(overload)
    • 方法名相同
    • 方法的參數(shù)類型,個數(shù)指厌,順序至少有一項不同
    • 如果只是返回類型不同刊愚,不能構成重載
    • 如果只是控制訪問修飾符號不一樣,不能構成重載.
  • 方法覆蓋(override)
    • 子類的有一個方法踩验,和父類的某個方法的名稱鸥诽、返回類型、參數(shù)一樣箕憾,則稱子類的這個方法覆蓋了父類的那個方法
    • 訪問權限只能:子類>=父類

4. 多態(tài)

一個引用(類型)在不同情況下的多種狀態(tài)牡借。
繼承是多態(tài)得以實現(xiàn)的基礎

  • 注意事項
    • Java允許父類的引用變量引用它子類的實例(對象) Animal animal=new Cat(); 這種轉換時自動完成的
    • 好處:消除了類之間的耦合關系,使程序更容易擴展(見E:\Java\Homework\接口_賣汽車.txt)
      • 新增一種類型汽車的銷售袭异,只需讓新定義的類實現(xiàn)Car并實現(xiàn)它的所有方法钠龙,無需對原有代碼做任何修改。CarShop類的sellCar(Car car)方法可以自動處理新的車型

抽象類

當父類的一些方法不能確定時御铃,可以用abstract關鍵字來修飾該方法[抽象方法]碴里,用abstract來修飾該類[抽象類]

  • 注意事項
    • 抽象類不能被實例化
    • 抽象類不一定要包含abstract方法,即可以有實現(xiàn)了的方法
    • 一旦某個類包含了abstract方法上真,這個類必須聲明為abstract
    • 抽象方法不能有主體:abstract void aaa( );

接口

接口就是給出一些沒有內(nèi)容的方法咬腋,封裝到一起,到某個類要使用的時候谷羞,再根據(jù)具體情況把這些方法寫出來

Class 類名 implements 接口
{
      方法帝火;
      變量;
}
  • 注意事項
    • 接口不能被實例化
    • 接口中的所有方法都不能有主體(可以理解為:接口是更抽象的抽象類) void aaa();
    • 一個類可以實現(xiàn)多個接口
    • 接口中可以有變量(但變量不能用private和protected修飾)
      • 接口中的變量湃缎,本質(zhì)是static犀填,而且是final,不管你加不加static修飾
      • 在java開發(fā)中嗓违,我們經(jīng)常把常用的變量九巡,定義在接口中,作為全局變量使用蹂季。訪問形式:接口名.變量名
      • 一個接口不能繼承其他的類冕广,但是可以繼承別的接口
  • 實現(xiàn)接口vs 繼承類
    • 單繼承:保證類的純潔性
      • 實現(xiàn)接口可以看作是對繼承的一種補充
    • 繼承是層級式,不靈活
      • 實現(xiàn)接口可以對某個類功能擴展偿洁,非常靈活

綁定

將一個方法調(diào)用同這個方法所屬的主體(也就是對象或類)關聯(lián)起來叫做綁定撒汉,分前期綁定和后期綁定

  • 前期綁定
    • 在程序運行之前就已經(jīng)綁定,由編譯器和連接程序實現(xiàn)涕滋,又叫做靜態(tài)綁定睬辐。比如static方法和final方法。注意!這里也包括private方法溯饵。因為它是隱式final的
  • 后期綁定
    • 在運行時根據(jù)對象的類型進行綁定侵俗,由方法調(diào)用機制實現(xiàn),因此又叫做動態(tài)綁定丰刊,或者運行時綁定隘谣。

final

  • 作用:final可以修飾變量或者方法
    • 當不希望父類的某個方法被子類覆蓋(override)時,可以用那個final關鍵字來修飾(見com.test2.Demo5.java)
    • 當不希望類的某個變量的值被修改啄巧,也可用final修飾寻歧。如果一個變量是final的,則必須賦初值
    • 當不希望類被繼承時棵帽,可用final修飾
  • 規(guī)范:fianl用下劃線命名
  • 注意事項
    • final修飾的變量又叫常量熄求。一般用xx_xx_xx來命名
    • 如果一個變量是final的渣玲,則必須賦初值

  1. 持續(xù)更新中~筆記記錄自韓順平Java網(wǎng)課 ?

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逗概,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子忘衍,更是在濱河造成了極大的恐慌逾苫,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枚钓,死亡現(xiàn)場離奇詭異铅搓,居然都是意外死亡,警方通過查閱死者的電腦和手機搀捷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門星掰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嫩舟,你說我怎么就攤上這事氢烘。” “怎么了家厌?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵播玖,是天一觀的道長。 經(jīng)常有香客問我饭于,道長蜀踏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任掰吕,我火速辦了婚禮果覆,結果婚禮上,老公的妹妹穿的比我還像新娘殖熟。我一直安慰自己局待,他們只是感情好,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著燎猛,像睡著了一般恋捆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上重绷,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天沸停,我揣著相機與錄音,去河邊找鬼昭卓。 笑死愤钾,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的候醒。 我是一名探鬼主播能颁,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼倒淫!你這毒婦竟也來了伙菊?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤敌土,失蹤者是張志新(化名)和其女友劉穎镜硕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體返干,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡兴枯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了矩欠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片财剖。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖癌淮,靈堂內(nèi)的尸體忽然破棺而出躺坟,到底是詐尸還是另有隱情,我是刑警寧澤该默,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布瞳氓,位于F島的核電站,受9級特大地震影響栓袖,放射性物質(zhì)發(fā)生泄漏匣摘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一裹刮、第九天 我趴在偏房一處隱蔽的房頂上張望音榜。 院中可真熱鬧,春花似錦捧弃、人聲如沸赠叼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘴办。三九已至瞬场,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涧郊,已是汗流浹背贯被。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留妆艘,地道東北人彤灶。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像批旺,于是被迫代替她去往敵國和親幌陕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

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

  • 面向對象筆記 一汽煮、 對象在內(nèi)存中的存放方法以及被調(diào)用過程 class文件首先被加載到方法區(qū)中的class文件內(nèi)容區(qū)...
    VictorBXv閱讀 464評論 0 2
  • 1 面向對象No6 面向對象 OO Object Oriented 編程時以對象為單元搏熄,封裝數(shù)據(jù)和邏輯,以此提...
    征程_Journey閱讀 1,144評論 0 2
  • 本文出自 Eddy Wiki 逗物,轉載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 1,202評論 0 5
  • Java OOP 什么是面向對象思想搬卒? 把一組數(shù)據(jù)和處理他們的方法組成對象(object),把相同行為的對象歸納為...
    chonglingliu閱讀 781評論 0 1
  • 晚上兩個舅娘到我家住翎卓,說了很多我外婆的是非,她們把很多責任都算到外婆身上摆寄,外公在生病的時候失暴,也沒有好好照顧好他,亂...
    何德勝覺悟閱讀 114評論 9 3