java的繼承和多型小結

2021-09-01 21:16:32 字數 1924 閱讀 8671

1、為什麼要繼承?如何繼承?繼承到了什麼?

比如我們定義了乙個學生類,所有的學生都擁有一些特定的屬性和方法。但如果這個系統應用於大學生的話,又會有許多的大學生類中特有的屬性和方法。這時就不必在重新定義乙個大學生類了,我們可以讓他繼承學生類。

首先我們先定義乙個學生類:

package cjl.extend0926;

/*** 學生類

* @author wyz**/

public class student

/** 名字屬性*/

public string name;

/*** 設定名字的方法

* @param s 要設定為名字的字串

*/public void setname(string s)

/*** 學生學習的方法

*/public void study()

}然後通過extends關鍵字讓大學生類繼承上面的學生類:

public class unstudent extends student

/*** 方法的重寫

* 重寫:子類重新實現父類中的方法

* 方法名,引數,返回值都一樣,僅僅是方法體不一樣

*/public void study()

}我們稱unsstudent為子類,student叫unstudent的父類,unstudent中就自動具有了student中定義的屬性和方法了。

執行**:

public static void main(string args)

輸出結果:

李四在學習

需要強調一點的是父類的構造方法不能夠被子類繼承。

2、自動轉型和強制轉型

自動轉型指的是子類物件會自動的轉化為父類型別,物件在呼叫父類的方法時,如果子類重寫了父類的方法,呼叫的就是子類的實現,否則就呼叫父類的方法。

另外需要注意的幾點:

1.子類特有的屬性和方法,只能是子類型別的物件才呼叫

2.物件宣告的是什麼型別,就只能呼叫這個類(及父類)中定義的方法

3.乙個類中的屬性和方法,只能是這個類(及子類)的物件才能呼叫

如**:

//自動轉型

//子類物件的型別可以自動轉成父類型別

student stu3 = new unstudent();

stu3.setname("王五");

//4.乙個物件呼叫的方法是父類還是子類的,取決於物件本身的型別

stu3.study();

執行結果:

王五是大學生,在學習

強制轉型指的是將父類型別的物件強制轉化為子類型別。因此強制轉型可能會發生邏輯錯誤。乙個物件可以被強制轉型,肯定是在前面某個地方被自動轉型了。乙個物件被自動轉成父類型別後還想呼叫子類特有的方法,就必須強制轉型。

**:unstudent stu4 = (unstudent)stu3;

stu4.cet4();

執行結果:

王五是大學生,要考試四級!!

3、方法的重寫和過載

在上例中大學生和學生的學習方法應該是不一樣的,所以有必要在子類中對父類的方法進行重寫。重寫就是保持方法的定義不變(包括方法名、引數、返回值),但方法內部實現同父類不同。

如上例中的public void study(){}方法。

如果子類中重寫了父類的方法,子類的物件在呼叫時則呼叫的是子類的方法,否則則呼叫父類的。

方法的過載指的是在同一類中可以出現同名的方法,方法的引數、返回值及函式體不同。物件在呼叫時根據其所含引數及返回值型別呼叫相應的函式。

如:public int study(){}

public int study(int a){}

public void study(){}

4、多型的理解

多型性指的是由於繼承和重寫機制,相同的物件在呼叫相同的方法時,得到的結果可能不一樣。

繼承 虛函式和多型小結

一.知識點總結 繼承 1.定義 在已有類的基礎上建立新類的過程。乙個 b 類繼承 a類,或稱從類 a 派生類 b類 a 稱為基類 父類 類 b 稱為派生類 子類 2.類繼承關係的語法形式 class 派生類名 基類名錶 資料成員和成員函式宣告 基類名錶 構成訪問控制 基類名1,訪問控制 基類名 2 ...

Java繼承和多型簡述

當乙個類有很多子類是,並且這些子類都重寫了父類中的某個例項方法。當我們把子類建立的物件的引用放到乙個父類的物件中時,就得到了該物件的乙個上傳型物件,那麼這個上傳型物件在呼叫這個例項方法時就可能具有多種形態。多型性就是指父類中某個例項方法被其子類重寫時,可以各自產生自己的功能行為。class duot...

Java核心 介面 繼承和多型 多型

利用多型可以使程式具有良好的擴充套件性,並可以對所有類物件進行通用的處理。eg 定義乙個平行四邊形的類 parallelogram 在類中頂乙個 draw 方法。public class parallelogram 如果需要頂乙個繪製正方形的方法,通過定義乙個正方形類來處理正方形物件,會出現 冗餘的...