文章目錄
- 一、類和物件
- 1.定義類和物件
- 2.定義類的步驟
- 3.使用類方法
- 總結
- 二、封裝
- 1.封裝的定義
- 2. 封裝的實作
- 3.訪問權限修飾符
- 三、繼承(extends)
- 1.繼承的定義
- 2.繼承的語法格式
- 3.多載和重寫
- 總結:
- 四、多型
- 1.多型的定義
- 2.多型的三要素
- 3.多型的實作原理
- 注意事項
一、類和物件
1.定義類和物件
類:通俗的講,類可以表示生活中的某一類事物,該事物所具有的特征(屬性)和行為(方法)歸結為一類,生活中有具體一類的事物也有抽象一類的事物所以類當然也分為普通類和抽象類,
物件:是實作類的具體實列,
2.定義類的步驟
(1)定義類名
(2)撰寫屬性
(3)撰寫方法
舉例:
public class person{ //定義類名:人類
private String name; //定義屬性:人類有名字 年齡
private int age;
public Person(String name, int age) { //構造方法
this.name = name;
this.age = age;
}
public void eat(){ //定義方法:吃飯
System.out.print(this.name+"吃飯");
}
}
3.使用類方法
通過實體化一個類物件去呼叫
實體化物件的方法:類名稱 物件名稱 = new 類名稱();并通過物件.(點運算子)訪問方法
例:
public class person{ //定義類名:人類
private String name; //定義屬性:人類有名字 年齡
private int age;
public Person(String name, int age) { //構造方法
this.name = name;
this.age = age;
}
public void eat(){ //定義方法:吃飯
System.out.print(this.name+"吃飯");
}
public static void main(String[] args) {
//實體化一個person物件
Person p1 = new Person("zs",18);
//通過物件訪問類方法
p1.eat();
}
}
總結
1、類就是有相同特征的事物的集合,而物件就是類的一個具體實體,
2、物件的產生需要以下三步:
(1)加載類;
(2)給物件開辟記憶體空間;
(3)呼叫構造方法;
3、物件屬性的初始化方式:
(1)提供一系列setter和getter方法;
(2)構造一個函式來多載;
二、封裝
1.封裝的定義
隱藏物件內部的復雜性,只對外公開簡單的介面,便于外界使用,從而提高系統的擴展性、可維護性
2. 封裝的實作
在JAVA中使用訪問權限修飾符,實作封裝,
Java用于限定其他物件對該類內部定義的訪問權限
有public、protected 、private、default 四個
3.訪問權限修飾符
(1)public修飾的變數或者方法在不同包中,相同包中,子類中,當前類中都是可以直接訪問的,
(2)protected修飾的變數或者方法在相同包中,子類中,當前類中都是可以直接訪問的,在不同包中的類則不能訪問,
(3)default(也就是默認的) 的變數或者方法在相同包中,當前類中都是可以直接訪問的,在不同包中,即便是子類中也不能訪問,
(4)private 修飾的變數或者方法只能在當前類中都是直接訪問,在不同類中就不能訪問,只能提供向外的公開的方法去呼叫,也就是面向物件的封裝,
三、繼承(extends)
1.繼承的定義
是面向物件的最顯著的一個特征,繼承是從已有的類中派生出新的類,新的類能吸收已有類的資料屬性和行為,并能擴展新的能力
比如上面的人類,每一個人都有名字和年齡,都會吃,但是具體人又分為男人和女人,又有自己特有的屬性和行為,甚至相同的行為,也有千差萬別,
2.繼承的語法格式
class Man extends Person{
private String voice;
public Man(String name, int age, String voice){
super(name, age); //呼叫父類中的構造方法,使用super();
this.bonous = bonous;
}
//子類重寫父類方法
public void eat(){
return super.eat() + voice;
}
}
3.多載和重寫
重寫:表示子類中的方法名、回傳值、引數串列和父類當中的方法是一模一樣,
多載:表示兩個方法方法名相同,引數串列不同(回傳值不能作為多載的衡量標準),
重寫和多載的區別和聯系
- 1)重寫發生在具有繼承關系兩個類之間的;多載既可以發生在具有繼承關系的兩個類之間,也可以發生于同一個類當中
- 2)構造方法可以構成多載,但是不可以構成重寫
- 3)子類重寫父類的方法實作叫做重寫;兩個方法方法名相同,引數串列不同叫做多載
- 4) 靜態方法可以被多載但是不能被重寫,重寫靜態方法相當于隱藏父類中的方法
總結:
- 1)一個父類,并不是優于子類或者比子類擁有更多的功能,子類比父類功能更加豐富
- 2)設計類時,一般將一些通用的功能放至父類當中,特有的功能則由子類所持有
- 3)子類中呼叫父類的普通方法/構造方法,需要通過super關鍵字,呼叫父類中的構造方法,則使用super(), 呼叫父類中的普通方法則使用super.xxx
- 4)父類中包含什么樣的構造器,子類中也需要包含什么樣的構造器
- 5)父類私有的屬性在該類之外是不可以訪問的
- 6)Java當中的繼承是單繼承,一個Java類只能繼承一個父類
四、多型
1.多型的定義
指允許不同類的物件對同一訊息做出回應,即同一訊息可以根據發送物件的不同而采用多種不同的行為方式,當一個類A有很多子類B,C,D時,并且子類都重寫了父類中的某個方法func(),A a = new B,C,D(),這樣的物件稱之為向上轉型物件,通過它呼叫func, 不同的向上轉型物件就會在呼叫func時表現不同的行為,這樣就稱之為多型,
2.多型的三要素
- 1)具有繼承關系的兩個類
- 2)重寫
- 3)向上轉型物件 父類的參考指向創建的子類的物件
向上轉型:
class Person{
public void method(){
}
}
class Son extends Person{
public void method(){
}
}
Person p = new Son();
p.method();
3.多型的實作原理

注意事項
物件轉換: 一個物件的參考可以型別轉換為另外一個物件的參考
- 向上轉型:當前的子類的物件賦值給父類的參考 隱式轉換
- 向下轉型:當把一個父類的實體轉換為子類的參考 顯式轉換
- instanceOf避免向下轉型會出現ClassCastException例外發生
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/206174.html
標籤:其他
