packagecn.learn.extend;
/*定義乙個父類 */
public
class
employee
public
void setage(int
age)
public
string getname()
public
void
setname(string name)
public employee(int
age, string name)
public
employee()
public
void
method()
}
packagecn.learn.extend;
/*1. 由employee生成的子類
注意:在子類建立的成員變數/成員方法與父類變數重名時
訪問有兩種方式(非private成員變數時)
直接:通過子類物件訪問成員變數/成員方法(構造方法除外)
等號左邊是誰就優先用誰,若沒有則繼續往上找,絕不會向下找(即物件是哪個類生成的就取誰的)
間接:通過成員方法訪問成員變數
2.重寫(override):在繼承關係中,形參引數列表一樣,方法名一樣,覆蓋掉父類
過載(overload):方法名稱一樣,引數列表不一樣
3.重寫注意事項:子類方法的返回值必須【小於等於】父類方法的返回值
4.重寫注意事項:子類方法的許可權(修飾符)必須【大於等於】父類許可權
@override -有效的重寫註解,起到檢測引數列表是否一致的作用 */
public
class teacher extends
employee
@override
public
void setage(int
age)
private
intage;
//重寫method方法,
//三中變數的呼叫,子類num,區域性num,父類num
@override
public
void
method()
}
packagecn.learn.extend;
/*繼承是多型的前提
子類定義格式
public class 子類名稱 extends 父類名稱{}
繼承中:
構造方法的呼叫是父類的優先於子類,因為子類的構造方法中有乙個預設的"super()",所以構造方法父類優先
但是若父類沒寫無參的構造方法,則預設呼叫會報錯,【這也是標準類有無參構造的原因】
但是可以在子類的構造方法中自己有個有參函式防止報錯,格式「super(引數資料)」
**但是只有子類構造方法才有資格呼叫,且必須是第乙個語句,且只能呼叫一次
子類必須呼叫父類構造方法,不寫則會預設呼叫
super關鍵字用法
1.在子類方法中訪問父類的成員變數
2.在與父類重名的子類方法中呼叫父類方法
3.在子類的構造方法中,訪問父類的構造方法
this關鍵字,是在生成物件之後產生的,低於static
1.this在成員方法中用來訪問本類的成員變數,用於區分成員方法的同名區域性變數
2.在本類的成員方法中訪問本類成員方法,可以省略,用來強調區分父類的同名方法
3.在本類的過載的構造方法中,訪問另乙個構造方法,格式:this(引數資料)
注:3中this必須是第乙個語句且只能呼叫一次,可見this與super無法同時使用,還有一點就是有參的構造不能呼叫無參,會陷入死迴圈 */
public
class
extends
}
c 中與繼承相關的概念
c 中繼承有三種 共有繼承 保護繼承 私有繼承,三個關鍵字分別是 public protected private。每種繼承的訪問許可權不一樣,談到繼承的訪問許可權首先得清楚乙個類中public protected private關鍵字修飾的屬性和方法其對類建立出來的物件的訪問許可權。小結 類的內部...
繼承的基礎概念
繼承是c 中 復用的重要的手段,通過繼承,可以獲得父類的所有功能 子類就是乙個特殊的父類 子類物件可以直接初始化父類物件 子類物件可以直接賦值給父類物件 繼承中的訪問級別 關鍵字protected的意義 為了繼承專門設計的,沒有protected就無法完成真正意義上的 復用 修飾的成員不能被外界直接...
繼承的相關知識
定義 繼承是物件導向復用的重要手段,即物件導向的可重用性是通過 繼承 來實現的。解決在已有的類中增加新的特性,減少重複的工作量的問題。已經存在的類,叫 基類 或 父類 建立的新的類,叫 派生類 或 子類 繼承是型別之間的關係模型,共享公有的東西,實現類內各自不同的東西。繼承的定義格式為 class ...