本節主要知識點:
Java面向對象的三大特徵:封裝、繼承、多態
一、封裝
1、訪問修飾符:說明了類以及屬性和方法的可訪問性。
(1)默認的:
用默認修飾符修飾的類、屬性以及方法只能被同一個包中的其它類訪問
(2)公有的:public
用public修飾的類、屬性以及方法能被任何包中的任何類訪問
注意:一般情況下,在Java中,類被修飾爲public,類中的方法一般也是用public修飾,屬性一般採用private修飾。
(3)私有的:private
用private修飾的屬性和方法,該屬性和方法只能在當前類中被訪問,除此之外都無法訪問這些屬性和方法。
特別的,private在Java中是無法修飾類的。
(4)受保護的:protected
protected訪問修飾符只用於父子繼承之間。
封裝實例,get方法與set方法:
public class User {
private int id;
private String username;
private String password;
private double money;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
2、包(package):採用IDE(集成開發環境)寫代碼,根據功能的不同,那麼不同的JAVA文件會被放置到不同的文件夾中,而在IDE中這個文件夾的概念就被稱之爲包。
注意:類一般採用public修飾,同一包中的類可以直接相互調用,而同一個項目下不同包的類想要相互調用,必須通過import引入。
3、封裝的目的:爲了讓被private修飾的屬性在當前類以外被訪問。
4、封裝的方法:get方法和set方法。在Java中,私有的屬性加上get方法和set方法就共同構成了Java中的封裝。
二、繼承
1、繼承的原因:很多實體類中擁有相同的屬性以及封裝的方法,大量重複的代碼很容易造成代碼冗餘。
2、繼承的方法:利用關鍵字extends,把這些類中擁有的相同的屬性和方法提取出來,創建一個公有類,這些類直接使用公有類中的屬性和方法。一旦確定子類繼承某個父類,那麼該子類就可以使用父類非私有的屬性和方法。
3、繼承具有單根性,一個子類只能繼承一個父類。
三、多態
1、在Java中,多態是伴隨着繼承而來的。
2、重寫:在父子關係中,父類中擁有的方法,子類也寫了相同的方法。這個過程稱爲重寫。
注意:只要子類中出現了和父類同名的、同返回值的、同參數的方法,就認爲是子類重寫了父類的方法。
3、抽象:在Java中,父類通過子類抽象出公有類,所以父類比子類更抽象。
(1)抽象類:在父子繼承關係中,一般把父類聲明爲抽象的類。
(2)抽象方法:父類的方法更多可以是描述性方法,我們把這些方法聲明爲抽象方法。抽象方法是沒有方法體的方法。
(3)抽象方法只能存在於抽象類,但是抽象類中除了可以有抽象方法外,也可以擁有普通方法。
(4)子類繼承抽象父類,那麼子類必須要實現該父類中的所有抽象方法。
(5)抽象類是無法自己實例化自己的類,抽象類的對象實例化的時候必須指向其子類。
4、構造方法與普通方法
(1)方法:是爲了實現某個或某些功能而編寫的代碼段,這個代碼段被封裝在一個結構中。
(2)方法的基本結構:
方法的基本結構
訪問修飾符 返回值類型 方法名(...)
{
功能代碼段
}
注意:①方法的訪問修飾符可以是默認的、public、private、protected;②方法的返回值類型主要分爲有返回值(即非void)、無返回值類型(即void);
③方法的調用就是通過方法名;
④方法是可以帶參數的,方法中帶的參數被稱之爲形式參數,簡稱形參,那麼對象在調用該方法的時候需要給這個方法傳遞實參。
(3)普通方法:
public void go()
{
無返回值無參數的方法
}
public void go(int id,String name)
{
無返回值但有參數的方法
}
public int go()
{
//有返回值但無參數的方法
return 0;
}
public int go(int id,String name)
{
//有返回值且有參數的方法
return 0;
}
(4)構造方法:只存在於當前類中的方法,它無任何返回值,與類同名。
public class User
{
public User()
{
}
}
(5)構造方法是一種沒有任何返回值類型的方法,無參的構造方法是伴隨着類的生成而生成的,而且構造方法就是類的對象用於實例化的方法,簡單來說,我們平時總是說new對象,其實new對象後面用的就是構造方法。
(6)無參構造方法確實是伴隨着類的生成而默認存在的,但是一旦手動添加了帶參的構造方法,無參的構造方法就被覆蓋了,不會再默認提供了,如果想要使用,必須手動添加回來。
Java面向對象相關知識: |