Java面向?qū)ο笏枷?/p>
1.現(xiàn)實(shí)生活中
面向過程
吃菜:1.買菜-->2.洗菜-->3.炒菜-->吃菜
面向?qū)ο?:?
吃菜: 1.找炒菜對(duì)象-->吃菜
類:把一類事物中的靜態(tài)屬性(成員變量),動(dòng)態(tài)行為(方法)統(tǒng)稱在一起;
public class Person(){
String name;
int age;
public void play(){
}
}
對(duì)象:當(dāng)前類的實(shí)例化醋虏,稱之為對(duì)象
創(chuàng)建對(duì)象
Person person = new Person();
2.構(gòu)造方法
定義:與類名相同且沒有返回值
構(gòu)造方法 --- 每一個(gè)類中都有一個(gè)默認(rèn)不帶參的構(gòu)造方法;
規(guī)則:
1.方法名和類名相同
2.不存在返回值
普通方法:
修飾符? 返回值類型? 方法名(參數(shù)列表)
public void add(){
}
構(gòu)造方法:
修飾符 方法名(參數(shù)列表)
public class Student{
? ? ? ? public Student(){
????????}//無慘構(gòu)造
? ? ? ? public Student(int a,int b){
????????}//有參構(gòu)造? ??
}
調(diào)用方式:創(chuàng)建對(duì)象時(shí)通過new語句調(diào)用寻咒。
作用:用來初始化操作。
調(diào)用自身的構(gòu)造方法颈嚼,用this(),毛秘;//this只能寫在首行,且只能有一個(gè)
構(gòu)造方法的執(zhí)行順序 super和this的舉例
繼承
好處:利于擴(kuò)展阻课,增加大代碼的維護(hù)性
子類可以使用父類所有的成員(屬性和方法)叫挟;
子類的構(gòu)造方法必須要先調(diào)用父類的構(gòu)造方法;
子類的構(gòu)造方法首行必須調(diào)用父類的構(gòu)造方法
super 關(guān)鍵字限煞,必須寫在子類的首行抹恳,用來調(diào)用父類的構(gòu)造方法,如果沒有署驻,編譯器會(huì)自動(dòng)添加奋献。
super也可以用來調(diào)用父類的方法,super.方法名();
如果子類的構(gòu)造方法中沒有指定調(diào)用父類的構(gòu)造方法旺上,那么編譯器會(huì)自動(dòng)為子類添加調(diào)用父類的無參的構(gòu)造方法瓶蚂,如果此時(shí),父類沒有無慘構(gòu)造宣吱,那么則報(bào)錯(cuò).
方法的重載
規(guī)則:方法名相同窃这,參數(shù)列表不同,跟返回值沒關(guān);
作用:解決了代碼通用性的問題
方法的重寫
規(guī)則:修飾符、返回值凌节、方法名相同、參數(shù)列表相同洒试。重寫必須在繼承過后才能使用.
重寫的作用:當(dāng)父類中的方法對(duì)子類來說不在適用倍奢。
this 關(guān)鍵字
this:當(dāng)前對(duì)象的引用
作用:當(dāng)局部變量與成員變量相同時(shí),區(qū)分成員變量和局部變量垒棋。
修飾符的權(quán)限
public:當(dāng)前項(xiàng)目中都能使用
protected:當(dāng)前包下及子類能使用
缺省 : 當(dāng)前包下能使用
private:當(dāng)前類能使用
附上下圖 能更好的理解:
static關(guān)鍵字?
修飾符卒煞,靜態(tài)的:能修飾變量、方法叼架、類
1.被static修飾的變量畔裕,稱為靜態(tài)變量,也可叫全局變量乖订,它跟類有關(guān)跟對(duì)象沒有關(guān)系扮饶,單獨(dú)存儲(chǔ)在方法區(qū),不用static修飾的屬性叫成員變量乍构。
成員變量和靜態(tài)變量的區(qū)別:
靜態(tài)變量跟類有關(guān)甜无,在類加載時(shí)被初始化,跟對(duì)象無關(guān)
成員變量跟對(duì)象有關(guān),必須使用對(duì)象來使用岂丘,new phone();
靜態(tài)方法里面不能存放非靜態(tài)的屬性陵究;
靜態(tài)屬性直接使用類名.屬性使用。
2.靜態(tài)方法直接使用類名.方法名使用
? ? ? ? ? ? ----一般工具類中的功能塊都會(huì)寫成靜態(tài)方法
3.static塊
1.優(yōu)先于main方法
2.一般用于加載音視頻資源奥帘、圖片都會(huì)采用靜態(tài)加載
static{
? ? ? ? 铜邮。。寨蹋。
}
5.靜態(tài)變量的缺點(diǎn):靜態(tài)變量在此類加載時(shí)會(huì)被分配空間松蒜,直到程序結(jié)束時(shí)空間才會(huì)被回收
final關(guān)鍵字
final :最終的,可以修飾變量,方法钥庇,類
final 修飾變量:最終的變量牍鞠,僅能賦值一次
? ? ? ? 修飾的是成員變量必須初始化
? ? ? ? 修飾的是局部變量需要在使用前賦值一次
final修飾方法:最終的方法,禁止重寫
final修飾的類:最終的類评姨,禁止擴(kuò)展难述,不允許繼承? 如:String
造型
向上造型:
向上造型:在Java中,支持聲明類型為父類類型吐句,實(shí)際賦值類型為子類類型
Animal animal? = new Cat();
允許將范圍小的數(shù)據(jù)賦值給范圍大的數(shù)據(jù)胁后,系統(tǒng)會(huì)自動(dòng)進(jìn)行轉(zhuǎn)換,將這種轉(zhuǎn)換稱為:向上造型(向上轉(zhuǎn)型);
向上造型僅僅改變了數(shù)據(jù)類型嗦枢,實(shí)際內(nèi)容不變攀芯;
僅使用父類中的成員,那么可以直接聲明為父類類型 -- 向上造型文虏,在使用向上造型后侣诺,還想使用子類獨(dú)有成員,則需要向下造型
向下造型:如果想要使用子類的獨(dú)有屬性則需要轉(zhuǎn)換為子類實(shí)例氧秘,在通過子類實(shí)例進(jìn)行調(diào)用稱為向下造型(向下轉(zhuǎn)型)
多態(tài)
多態(tài)產(chǎn)生的條件:
1.需要繼承
2.必須重寫
3.數(shù)據(jù)類型相同年鸳, 實(shí)際賦值不同.如:Animal a1 = new Cat();
抽象
定義:使用abstract修飾的類、方法丸相、變量稱為抽象
作用:在搭建項(xiàng)目結(jié)構(gòu)時(shí)搔确,如果不清楚當(dāng)前具體的實(shí)現(xiàn)方式,將父類中的方法抽象化灭忠,強(qiáng)制子類進(jìn)行重寫膳算,項(xiàng)目搭建時(shí)一般會(huì)將父類作為抽象類,將行為抽象化弛作,之后再完善.
1.只要類中有抽象方法涕蜂,那么類必須是抽象類,抽象類中可以沒有抽象方法。
2.繼承抽象類映琳,子類要么實(shí)現(xiàn)父類的所有方法宇葱,要么變成抽象類
3.抽象類不能被實(shí)例化
4.抽象類有構(gòu)造方法
接口
定義:使用interface修飾的類 稱為接口瘦真,接口是一個(gè)特殊的抽象類。
作用:接口在開發(fā)過程中可以快速分離工作內(nèi)容黍瞧,接口是一個(gè)規(guī)范诸尽,定義了一個(gè)接口,開發(fā)者就可以繼續(xù)他的業(yè)務(wù)邏輯代碼了印颤。
1.接口中的變量只能使用public 修飾? 即使不寫您机,默認(rèn)為public static final ==>常量
2.接口中沒有構(gòu)造方法
3.一個(gè)類可以實(shí)現(xiàn)多個(gè)接口
4.接口可以實(shí)現(xiàn)多繼承//基本不用
5.接口中的方法,是子類來實(shí)現(xiàn)的年局,接口中的方法默認(rèn)是public abstract 返回類型 方法名()類型际看。static defalut abstract 默認(rèn)只能使用一種