一、什么是面向?qū)ο螅?/h3>
現(xiàn)實(shí)世界中,隨處可見的一種事物就是對象,對象是事物存在的實(shí)體,如人類、書桌、計(jì)算機(jī)、高樓大廈等。人類解決問題的方式總是將復(fù)雜的事物簡單化,于是就會(huì)思考這些對象都是由哪些部分組成的。通常都會(huì)將對象劃分為兩個(gè)部分,即動(dòng)態(tài)部分與靜態(tài)部分。靜態(tài)部分,顧名思義就是不能動(dòng)的部分,這個(gè)部分被稱為“屬性”,任何對象都會(huì)具備其自身屬性,如一個(gè)人,它包括高矮、胖瘦、性別、年齡等屬性。然而具有這些屬性的人會(huì)執(zhí)行哪些動(dòng)作也是一個(gè)值得探討的部分,這個(gè)人可以哭泣、微笑、說話、行走,這些是這個(gè)人具備的行為(動(dòng)態(tài)部分)即方法,人類通過探討對象的屬性和觀察對象的行為了解對象。
二、類(封裝、繼承、多態(tài))
類是封裝對象的屬性和行為的載體,反過來說具有相同屬性和行為的一類實(shí)體被稱為類。
1. 封裝
封裝是面向?qū)ο缶幊痰暮诵乃枷耄瑢ο蟮膶傩院托袨榉庋b起來,而將對象的屬性和行為封裝起來的載體就是類,類通常對客戶隱藏其實(shí)現(xiàn)細(xì)節(jié),這就是封裝的思想。
public class XiYouRenWu {
private String name;
private String weapon;
public String getName()
{
return(name);
}
public void setName( String name )
{
this.name = name;
}
public String getWeapon()
{
return(weapon);
}
public void setWeapon( String weapon )
{
this.weapon = weapon;
}
XiYouRenWu( String n, String w )
{
name = n;
weapon = w;
}
}
2. 繼承
類與類之間同樣具有關(guān)系,如一個(gè)百貨公司類與銷售員類相聯(lián)系,類之間這種關(guān)系被稱為關(guān)聯(lián)。關(guān)聯(lián)是描述兩個(gè)類之間的一般二元關(guān)系,例如一個(gè)百貨公司類與銷售員類就是一個(gè)關(guān)聯(lián),再比如學(xué)生類以及教師類也是一個(gè)關(guān)聯(lián)。兩個(gè)類之間的關(guān)系有很多種,繼承是關(guān)聯(lián)中的一種。
3. 多態(tài)
多態(tài)性允許以統(tǒng)一的風(fēng)格編寫程序,以處理種類繁多的已存在的類以及相關(guān)類。該統(tǒng)一風(fēng)格可以由父類來實(shí)現(xiàn),根據(jù)父類統(tǒng)一風(fēng)格的處理,就可以實(shí)例化子類的對象。由于整個(gè)事件的處理都只依賴于父類的方法,所以日后只要維護(hù)和調(diào)整父類的方法即可,這樣降低了維護(hù)的難度,節(jié)省了時(shí)間。 在提到多態(tài)的同時(shí),不得不提到抽象類和接口,因?yàn)槎鄳B(tài)的實(shí)現(xiàn)并不依賴具體類,而是依賴于抽象類和接口。
三、類的相關(guān)知識
成員變量:在Java中對象的屬性稱為成員變量,也可以稱為屬性。為了了解成員變量,首先定義一個(gè)圖書類,成員變量對應(yīng)于類對象的屬性,在Book類中設(shè)置3個(gè)成員變量id、name、category,分別對應(yīng)于圖書編號、圖書名稱和圖書類別這3個(gè)圖書屬性。
public class Book {
//定義屬性
//成員變量
int id; //圖書編號
String name; //圖書名
String category; //圖書類型
}
成員方法:在Java語言中使用成員方法對應(yīng)于類對象的行為。以Book類為例,它包含getName()和setName()兩個(gè)方法,這兩個(gè)成員方法分別為獲取圖書名稱和設(shè)置圖書名稱的方法。定義成員方法的語法格式如下所示:
權(quán)限修飾符 返回值類型 方法名(參數(shù)類型 參數(shù)名)
{
... //方法體
return 返回值;
}
public void printName(){ //無返回值的成員方法
System.out.println(name);
} public String printCategory(){ //有返回值的成員方法
return category;
}
局部變量:局部變量是在方法被執(zhí)行時(shí)創(chuàng)建,在方法執(zhí)行結(jié)束時(shí)被銷毀。局部變量在使用時(shí)必須進(jìn)行賦值操作或被初始化,否則會(huì)出現(xiàn)編譯錯(cuò)誤。
可以將局部變量的有效范圍稱為變量的作用域,局部變量的有效范圍從該變量的聲明開始到該變量的結(jié)束為止。
public void Min(double a,double b,double c){
double sum; //sun為局部變量
sum=a+b+c;
System.out.println(sum);
}
權(quán)限修飾符:Java中的權(quán)限修飾符主要包括private、public和protected,這些修飾符控制著對類和類的成員變量以及成員方法的訪問。
如果一個(gè)類的成員變量或成員方法被修飾為private,則該成員變量只能在本類中被使用,在子類中是不可見的,并且對其他包的類也是不可見的。
如果將類的成員變量和成員方法的訪問權(quán)限設(shè)置為public,則除了可以在本類使用這些數(shù)據(jù)之外,還可以在子類和其他包中的類中使用。
如果一個(gè)類使用protected修飾符,那么只有本包內(nèi)的該類的子類或其他類可以訪問此類中的成員變量和成員方法。
如果一個(gè)類的訪問權(quán)限被設(shè)置為private,這個(gè)類將隱藏其內(nèi)的所有數(shù)據(jù),以免用戶直接訪問它。如果需要使類中的數(shù)據(jù)被子類或其他包中的類使用,可以將這個(gè)類設(shè)置為public訪問權(quán)限。
public class Book {
//定義屬性
//成員變量
private int id; //圖書編號
private String name; //圖書名
private String category; //圖書類型
public void printName(){ //無返回值的成員方法
System.out.println(name);
}
public String printCategory(){ //有返回值的成員方法
return category;
}
}
構(gòu)造方法:構(gòu)造方法是一個(gè)與類同名的方法,對象的創(chuàng)建就是通過構(gòu)造方法完成的。每當(dāng)類實(shí)例化一個(gè)對象時(shí),類都會(huì)自動(dòng)調(diào)用構(gòu)造方法。
構(gòu)造方法的特點(diǎn)如下: 構(gòu)造方法沒有返回值。
構(gòu)造方法的名稱要與本類的名稱相同。
public class Jidongche {
private String chepai;
private int chesu;
private double zaizhong;
Jidongche(){
//默認(rèn)存在的構(gòu)造方法
}}
public class Jidongche {
private String chepai;
private int chesu;
private double zaizhong;
Jidongche(){ //直接在構(gòu)造方法中對屬性賦值,可在實(shí)例化對象時(shí)使對象的屬性值初始化
chepai="XX1234";
chesu=100;
zaizhong=100;
}
}
public class Jidongche {
private String chepai;
private int chesu;
private double zaizhong;
Jidongche(String chepai,int chesu,double zaizhong){ //帶形參,實(shí)例化對象時(shí)必須傳參數(shù)
setChepai(chepai);
setChesu(chesu);
setZaizhong(zaizhong);
}
四、寫到最后
今天的Java知識就分享到這里!點(diǎn)關(guān)注,不迷路,關(guān)注程序員曾曾,每天分享不同的Java知識,如果想要知道更多的Java基礎(chǔ)知識以及筆試面試資料我這邊整理了一個(gè)我自己的GitHub倉庫:Java工程師修煉手冊,大家如果有需要可以自行查看