5.多型(重重之重 難點)
4.物件建立的過程(了解)
4.1單個物件建立的過程
成員變數 = 新的值;
由結果可知優先順序如下:初始化方式、構造塊、構造方法
由結果可知優先順序如下:靜態**塊、構造塊、構造方法
4.2子類物件建立的過程
(1)main()方法時程式的入口,當建立物件時會在堆區申請一塊儲存區域;
(2)先載入父類再載入子類,因此先執行父類靜態**塊再執行子類**塊;
(3)執行父類的構造塊和父類的構造方法體,此時子類物件中包含的父類部分構造完畢;
(4)執行子類的構造塊和子類的構造方法體,此時子類物件構造完畢,繼續向下執行。
}5.多型(重重之重 難點)
5.1基本概念
多型就是指同一種事物表現出來的多種形態。
5.2語法格式
//父類型別 引用變數名 = new 子類型別();
person pw =
newworker()
;pw.
show()
;//解析: 在編譯階段pw是person型別的引用,因此只能呼叫person類中的show()方法;
//在執行階段pw指向worker型別的物件,因此最終呼叫worker類中的重寫以後的show()方法
5.3多型的效果
(1)當父類引用指向子類物件時,父類引用可以直接呼叫父類的成員方法;
(2)當父類引用指向子類物件時,父類引用不可以直接呼叫子類獨有的成員方法;
(3)對於父子類都有的非靜態成員方法來說,編譯階段呼叫父類版本,執行階段呼叫子類版本;
(4)對於父子類都有的靜態成員方法來說,編譯和執行階段都呼叫父類版本;
5.4引用型別之間的轉換
(1)引用資料型別之間的轉換分為兩種:自動型別轉換和強制型別轉換。
其中自動型別轉換主要指小範圍到大範圍的轉換,也就是子類到父類的轉換。
(2)引用資料型別之間的轉換必須發生在父子類之間,否則編譯報錯。
(3)若擁有父子類關係則編譯通過,若目標型別不是該引用真正指向的子類型別則發生型別轉換異常。
(4)為了避免上述錯誤的發生,每次強轉之前進行型別的判斷,具體如下:
if(父類型別的引用變數名 instanceof 目標型別){}
--------判斷引用指向的物件是否為目標型別,若是則返回true,否則false。
if
(pw instanceof
teacher
)else
package cn.itxdl.day09;
public
class
person
public
person
(string name,
int age)
public string getname()
public
void
setname
(string name)
public
intgetage()
public
void
setage
(int age)
public
void
show()
public
static
void
test()
}
package cn.itxdl.day09;
public
class
worker
extends
person
public
worker
(string name,
int age,
int salary)
public
intgetsalary()
public
void
setsalary
(int salary)
@override
public
void
show()
public
static
void
test()
}
package cn.itxdl.day09;
public
class
teacher
extends
person
public
teacher()
public
teacher
(string name,
int age,
int id)
public
void
setid
(int id)
}@override
public
void
show()
}
package cn.itxdl.day09;
public
class
testpersonworker
else
}}
package cn.itxdl.day09;
public
class
testperson
//自定義成員方法實現引數指定教師物件的自我介紹
public
static
void
showteacher
(teacher t)
//自定義成員方法實現引數指定物件的自我介紹
public
static
void
show
(person p)
public
static
void
main
(string[
] args)
}
5.5實際意義
多型的實際意義在於遮蔽不同子類的差異性實現通用的程式設計,帶來不同的結果。
9 物件的擴充套件
es6一共有5種方法可以遍歷物件的屬性。1 for.in for.in迴圈遍歷物件自身的和繼承的可列舉屬性 不含symbol屬性 2 object.keys obj object.keys返回乙個陣列,包括物件自身的 不含繼承的 所有可列舉屬性 不含symbol屬性 3 object.getownp...
C 物件導向 9 物件模型和this指標
本篇來學習物件模型和this指標,物件模型主要是了解物件的儲存模型。在c 中,類內的成員變數和成員函式是分開儲存的,只有非靜態成員變數才是屬於類的物件上,其他都和類存在不同記憶體區域。1.乙個類的空物件占用記憶體是多大位元組 這裡我們先寫乙個 通過sizeof 函式來列印乙個空的類物件占用記憶體是多...
Vue 9 物件迴圈渲染
在vue中增加物件內容不能通過物件屬性如vm.userinfo.address zj 的方式,應用 一.重新改變物件的引用 vm.userinfo 二.通過vue的set方法向物件中注入資料 vue.set vm.userinfo,address beijing 三.通過vm的例項方法 set vm...