通俗的說,多型是由於繼承結構的存在乙個類有多個匯出類,表現的出多種行為;
具體的講,多型就是將匯出類看做是它的基類,通過動態繫結,實現多種不同的行為。
向上轉型
將匯出類看做是它的基類的過程稱為向上轉型(upcasting)
void
dosomethings
(shape shape)
circle circle =
newcircle()
;******** ******** =
new********()
;line line =
newline()
;dosomethings
(circle)
;dosomethings
(********)
;dosomethings
(line)
;
1.只有非private方法才能被覆蓋,private方法不具有多型性;
2.靜態方法不具有多型性。
3.編寫構造器時有一條有效的準則:「用盡可能簡單的方法使物件進入正常狀態,如果可以的話,避免呼叫其他方法」,在構造器內部唯一能夠安全的呼叫的那些方法是基類中的final方法(也適用於private方法,它們自動屬於final)。
向下轉型
向下轉型是不安全的。
class
useful
public
voidg(
)}class
moreuseful
extends
useful
public
voidg(
)public
voidu(
)public
voidv(
)public
voidw(
)}/** * @author zhanggj
* @date 2020/11/16 08:28
*/public
class
rtti
; x[0]
.f()
; x[1]
.g()
;// compile time: method not found in useful:
// x[1].u();
/** * downcast/rtti
*/((moreuseful) x[1]
).u(
);/** * exception thrown
*/((moreuseful) x[0]
).u(
);}}
Java 多型(向上轉型)
先來看一段 class baseclass public void test public class subclass extends baseclass public void sub public static void main string args 說明 當把乙個子類物件直接賦給父類的引...
多型向上向下轉型!
public abstract class animal public class cat extends animal void catchmouse 特有方法!public class dog extends animal void watchhouse 其實前面已經有所涉及,具體來說 以動物為...
多型,向上向下轉型
多型的前提 繼承 物件的多型 乙個物件擁有多種形態,例如小明有學生形態,有人類形態 中體現多型性 其實就是一句話,父類引用指向子類物件 person p new student 上句是向上轉型,一旦向上轉型為父類,就無法呼叫子類原本特有的內容 public class person public c...