定義:將子類的物件賦值給父類的引用。用法如下:
student s =new student();
person p = s;
或者:
person p =new student();
因為在繼承樹的畫法中,父類是放置在上方的。
先看下面程式:
class
person
}
class
student
extends
person
void introduce()
}
class test
}
輸出結果:
error:找不到符號
符號 :變數address
位置 :型別為person的變數p
p.address = "北京"
;
錯誤的原因是因為:
class test
}
編譯執行
輸出結果:
我的姓名是:張三,我的年齡是20
我的家在null
從結果來看,我們發現p呼叫的introduce()方法是子類的introduce()方法。原因是:
在向上轉型中,當把乙個子類物件直接賦值給乙個父類的引用時,例如上面的person p = new student(); 這個p引用變數的編譯時型別是person,而執行時型別是student,當執行時呼叫該引用變數的方法時,其方法行為總是表現出子類方法的行為特徵,而不是父類方法的行為特徵,這就可能出現:相同型別的變數、呼叫同乙個方法時呈現出不同的行為特徵,這就是多型。
關於多型,以後會有更詳細的介紹。
定義:將父類的物件賦值給子類的引用。用法如下:
student s1 =new student();
person p = s1;
student s2 = (student)p;
或者
person p =new student();
student s = (student)p;
7 物件的轉型
1 物件的向上轉型 將子類的物件賦值給父類的引用。student s new student 如學生張三 person p s 張三這個人 注意 1 乙個引用能夠呼叫哪些成員 變數和方法 取決於這個引用p裡定義了什麼成員。2 對於,子類重寫父類的方法,引用呼叫的是哪乙個方法,取決於這個引用所指向的物...
java基礎類庫(九) 3 物件轉殖
知識點 1.清楚物件轉殖的操作結構 2.鞏固介面的作用 具體內容 物件轉殖就是乙個物件複製操作,再object類裡面專門提供有乙個專門的轉殖方法 物件轉殖 protected object clone throws clonenotsupportedexception 注 protected本包和不...
java基礎之物件的向上轉型
物件的向上轉型 什麼是向上轉型 將子類的物件賦值給父類的引用。1 乙個引用可以呼叫哪些變數 變數和函式 取決於這個引用的型別中變數的定義。p這個引用是person型別,person型別中定義了name和age屬性,已經introduce方法。p可以呼叫的變數只能是person類中已經定義的變數的型別...