假設animal類是tiger類的父類,當用子類建立乙個物件,並把這個物件的引用放到父類的物件中時,比如:
animal a;
a=new tiger();
或
animal a;
tiger b=new tiger();
a=b;
這時,稱物件a是物件b的上轉型物件(好比說「老虎是動物」)。
物件的上轉型物件的實體是子類負責建立的,但上轉型物件會失去原物件的一些屬性和功能(上轉型物件相當於子類物件的乙個「簡化」物件)。上轉型物件具有如下特點:
1)上轉型物件不能操作子類新增的成員變數(失掉了這部分屬性),不能呼叫子類新增的方法(失掉了一些行為)。
2)上轉型物件可以訪問子類繼承和隱藏的成員變數,也可以呼叫子類繼承的方法或子類重寫的方法。上轉型物件操作子類繼承的方法或子類重寫的例項方法,其作用等價於子類物件去呼叫這些方法。因此,如果子類重寫了父類的某個例項方法後,當物件的上轉型呼叫這個例項方法時一定是呼叫了子類重寫的例項方法。
注:(1)不要將父類建立的物件和子類物件的上轉型物件混淆。
(2)可以將物件的上轉型物件強制轉換得到乙個子類物件,這時,該子類又具備了子類所有的屬性和功能。
(3)不可以將父類建立的物件的引用復值給子類宣告的物件(不能說"人是美國人")。
(4)如果子類重寫了父類靜態方法,那麼子類物件的上轉型物件不能呼叫子類的靜態方法,只能呼叫父類的靜態方法。
exmaple:
class a
}class b extends a
void cryspeak(string s)
}public class example1
}
執行結果:***i love this game***
上轉型物件
如果b類是a類的子類或間接子類,當用b類建立物件b並將這個物件b的引用賦給a類物件a時,如 a a a new b ora a b b new b a b 則稱a類物件a是子類b物件b的上轉型物件。物件b的上轉型a的實體是有子類b建立的,但是上轉型物件會失去子類b的一些屬性和功能。上轉型物件具有以下...
物件變數多型性 上轉型物件和下轉型物件
上轉型物件 上轉型物件只能訪問父類中宣告的成員變數和成員方法,不可以訪問子類新增的特有的成員變數和成員方法。如果子類重寫了父類的方法,則上轉型物件呼叫該方法時,必定是呼叫重寫的方法。如果子類重新定義了父類的同名變數,則上轉型物件應用該變數時是父類中的定義的變數,而不是子類中定義的變數。下轉型物件 將...
Java 上轉型物件的說明
父類宣告,子類例項化的物件就是上轉型物件 例如 public class text class father class son extends father上轉型物件的使用規則 1 上轉型物件不能呼叫子類新增的成員變數和方法,失去了這部分的屬性和功能 2 上轉型物件可以操作子類繼承的成員變數 包括...