面向?qū)ο缶幊贪ǎ?/p>
- 面向?qū)ο蟮姆治觯∣OA)
- 面向?qū)ο蟮脑O(shè)計(jì)(OOD)
- 面向?qū)ο蟮木幊虒?shí)現(xiàn)(OOP)
面向?qū)ο笏枷耄?br>
OOA:把事務(wù)分解成對(duì)象洞焙,并賦予相應(yīng)的屬性與行為视译,通過多個(gè)對(duì)象的相互協(xié)調(diào)解決問題
OOD:對(duì)象間無先后順序椅寺,共同作用才構(gòu)成整個(gè)系統(tǒng)。只要設(shè)計(jì)出幾個(gè)對(duì)象予弧,讓他們交互蟆盐,就可以完成系統(tǒng)功能
面向?qū)ο缶幊趟枷雽?shí)際就是一種運(yùn)用對(duì)象,類室谚,繼承毡鉴,封裝,聚合秒赤,關(guān)聯(lián)猪瞬,消息,多態(tài)性等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法入篮。
面向?qū)ο蟾拍?/h4>
抽象(abstract):根據(jù)具體問題概括共同的方面,屬性與關(guān)系等潮售,舍棄非本質(zhì)特征。
對(duì)象:是系統(tǒng)中用來描述客觀事物的一個(gè)實(shí)體酥诽。
類:是一組具有相同屬性和行為的對(duì)象的抽象,類的作用是用來創(chuàng)建對(duì)象肮帐,對(duì)象是類的一個(gè)實(shí)例咖驮。
類和對(duì)象的關(guān)系:
抽象和具體的關(guān)系
類是創(chuàng)建對(duì)象的模板,對(duì)象是類的實(shí)例训枢。
類是一個(gè)靜態(tài)的概念,類本身不攜帶任何數(shù)據(jù)。當(dāng)沒有為類創(chuàng)建任何對(duì)象時(shí)袋坑,類本身不存在于內(nèi)存空間中仗处。
對(duì)象是一個(gè)動(dòng)態(tài)的概念。每一個(gè)對(duì)象都存在著有別于其它對(duì)象的屬于自己的獨(dú)特的屬性和行為枣宫。對(duì)象的屬性可以隨著它自己的行為而發(fā)生改變婆誓。
類的定義
語法格式:
[類修飾符] class 類名{
類的成員
}
類的成員:
- 成員變量(屬性)
- 成員方法(方法)
- 嵌套類
- 代碼塊
編寫規(guī)范:
- 類名首字母大寫
- 屬性和方法第一個(gè)單詞小寫也颤,其他單詞首字母大寫
屬性和方法
屬性有默認(rèn)值,因此可以不用賦值就可以使用翅娶。
方法中可以直接使用屬性名好唯,對(duì)屬性進(jìn)行操作燥翅。
屬性和局部變量對(duì)比
局部變量
- 方法體中聲明的變量,方法中的參數(shù)或代碼塊中聲明的變量森书,都是局部變量
- 屬性可以和局部變量同名,使用this關(guān)鍵字進(jìn)行區(qū)分
- 屬性在整個(gè)類中生效杨名,無論在什么地方聲明
- 局部變量必須先聲明猖毫,然后才能使用
對(duì)象的創(chuàng)建
什么是對(duì)象
- 類 :對(duì)某一類事物的描述
- 對(duì)象:是實(shí)際存在的某類事務(wù)的個(gè)體
創(chuàng)建語法:
類名 對(duì)象名=new 類名();
對(duì)象的使用
點(diǎn)運(yùn)算符
- 引用類的屬性:對(duì)象名.屬性
- 引用類的方法:對(duì)象名.方法名(實(shí)參)
在類內(nèi)的方法中,訪問本類的屬性和方法可以直接訪問
創(chuàng)建對(duì)象原理
實(shí)例化對(duì)象的同時(shí)操作了棧內(nèi)存和堆內(nèi)存
- 在棧內(nèi)保存對(duì)象的首地址鄙麦,即引用
- 在堆內(nèi)存保存了對(duì)象的
屬性 - 對(duì)對(duì)象的所有操作只能通過引用完成,一旦引用出棧釋放沒有任何引用指向該對(duì)象胯府,對(duì)象就變成垃圾
棧stack:棧的存取速度比堆快,效率高炎咖。在棧內(nèi)保存基本數(shù)據(jù)類型的局部變量和對(duì)象的引用值寒波。
堆heap:堆可以保存那些對(duì)空間要求較大的變量。如對(duì)象的屬性和數(shù)組的元素俄烁。在堆內(nèi)存中開辟空間,只能通過內(nèi)存分配操作符號(hào)new页屠,凡是出現(xiàn)new的地方必定分配了一個(gè)堆內(nèi)存。
創(chuàng)建匿名對(duì)象
- 創(chuàng)建完對(duì)象辰企,直接調(diào)用這個(gè)對(duì)象的方法或?qū)傩裕欢x句柄竹观,這個(gè)對(duì)象叫匿名對(duì)象。
- 如果只使用該對(duì)象進(jìn)行一次方法或?qū)傩哉{(diào)用臭增,可以創(chuàng)建匿名對(duì)象。
垃圾回收機(jī)制
垃圾回收(Garbage Collection速址,GC),JDK7以后使用GI(Garbage First)機(jī)制:
- 當(dāng)沒有對(duì)象引用指向原先分配給某個(gè)對(duì)象的內(nèi)存時(shí)芍锚,該內(nèi)存便成為垃圾。JVM的一個(gè)系統(tǒng)級(jí)線程會(huì)自動(dòng)釋放該內(nèi)存塊默刚。
- 垃圾回收機(jī)制作用于堆內(nèi)存逃魄,與棧內(nèi)存無關(guān)荤西。
- 垃圾回收機(jī)制是JVM內(nèi)部運(yùn)行的一個(gè)優(yōu)先級(jí)比較低的后臺(tái)線程伍俘,自動(dòng)進(jìn)行垃圾回收邪锌。它是保證程序健壯性的主要手段癌瘾,不用程序員參與,避免了由于程序員忘記回收內(nèi)存而引起的內(nèi)存泄露妇萄,同時(shí)也避免了回收內(nèi)存帶來的代碼繁瑣咬荷。
對(duì)象會(huì)被回收的情況:
1.對(duì)象的引用賦值為null:Person p=new Person(); p=null;
2.使用的匿名對(duì)象:new Person().sayhello();
3.超出生命周期冠句,如
for(int i=1;i<100;i++){
Person p=new Person();
}
每結(jié)束一次循環(huán)幸乒,變量p超出生命周期懦底,對(duì)象變?yōu)槔?/p>
構(gòu)造方法
構(gòu)造方法(構(gòu)造器罕扎,Constructor)
- 構(gòu)造方法也是方法,但是它是特殊的方法而已
- 所有的對(duì)象都是通過構(gòu)造器來創(chuàng)建
創(chuàng)建對(duì)象
類名 對(duì)象名=new 構(gòu)造方法()壳影;
構(gòu)造器(構(gòu)造方法/構(gòu)造器弥臼,Constructor)特點(diǎn):
- 構(gòu)造方法名必須與類有相同的名稱
- 不含返回值類型,也沒有void
- 不能在方法中使用return語句返回一個(gè)值
構(gòu)造方法作用:
用來完成對(duì)象的創(chuàng)建掺栅,即完成對(duì)象的實(shí)例化
- 在Java中烙肺,每個(gè)類都至少有一個(gè)構(gòu)造器
- 一個(gè)類可以不寫出構(gòu)造方法氧卧,編譯器會(huì)自動(dòng)的給這個(gè)類增加一個(gè)構(gòu)造器,該構(gòu)造器沒有任何參數(shù)搏明,稱為“空構(gòu)造器”闪檬。
- 如果編譯者為該類定義了構(gòu)造器,系統(tǒng)就不再提供默認(rèn)的構(gòu)造器粗悯。(如果不寫空參構(gòu)造器,還用空參方式創(chuàng)建對(duì)象样傍,會(huì)出錯(cuò))
構(gòu)造方法的重載
可以跟普通方法一樣重載。
構(gòu)造器可以有多個(gè)茎刚,用戶根據(jù)需要選擇不同參數(shù)的構(gòu)造器創(chuàng)建對(duì)象炕檩。
帶參數(shù)的構(gòu)造器,常用來對(duì)成員變量進(jìn)行初始化笛质。
構(gòu)造方法的調(diào)用
- 只能在本類的構(gòu)造方法中,調(diào)用其他重載的構(gòu)造方法
- 使用this關(guān)鍵字跷究,并且代碼只能在構(gòu)造方法的第一行
- 根據(jù)實(shí)參確定調(diào)用的構(gòu)造方法
封裝
隱藏對(duì)象的屬性和方法的實(shí)現(xiàn)細(xì)節(jié)敲霍,只公開對(duì)外接口
好處:
- 隱藏實(shí)現(xiàn)的細(xì)節(jié)
- 方便修改的實(shí)現(xiàn)
- 只能通過規(guī)定方法訪問
封裝關(guān)鍵字
靜態(tài):static關(guān)鍵字
可以修飾的元素:
- 屬性:只能修飾屬性,不能修飾局部變量
所有對(duì)象共享柴我,稱為靜態(tài)變量或類變量 - 方法:不需要實(shí)例化扩然,可以直接訪問艘儒,稱為靜態(tài)方法或類方法
- 代碼塊:類中有static修飾的,不包含在任何方體中的代碼塊觉增,稱為靜態(tài)代碼塊
靜態(tài)屬性
類被載入時(shí)創(chuàng)建翻斟,只要類存在,static變量就存在
靜態(tài)變量與非靜態(tài)變量的關(guān)系
靜態(tài)變量被所有的對(duì)象共享访惜,在內(nèi)存中只有一個(gè)副本,它當(dāng)且僅當(dāng)類初次加載時(shí)會(huì)被初始化植捎。而非靜態(tài)變量是對(duì)象所擁有的阳柔,在創(chuàng)建對(duì)象的時(shí)候被初始化,存在多個(gè)副本舌剂,各個(gè)對(duì)象擁有的副本互不影響
訪問方式:
- 直接訪問:類名.屬性;
實(shí)例化后訪問:對(duì)象名.屬性
靜態(tài)方法
不需實(shí)例化荐绝,可以直接訪問,訪問方式
- 直接訪問:類名.方法名()
- 實(shí)例化后訪問:對(duì)象名.方法名()
注:靜態(tài)方法不能修飾構(gòu)造器低滩,不能使用this關(guān)鍵字岩喷,只能訪問靜態(tài)屬性和方法,而不能訪問非靜態(tài)屬性和方法
靜態(tài)語句塊
一個(gè)類中由static關(guān)鍵字修飾的纱意,不包含在任何方法體中的代碼塊
- 當(dāng)類被載入時(shí),靜態(tài)代碼塊被執(zhí)行迄委,且只被執(zhí)行一次
- 靜態(tài)塊常用來類屬性的初始化