public class ExampleClass {
public static void main(String[] args) {
// Upcasting from subclass to super class.
A aRef=new C();
//aRef.setMessage(); compilation Error
aRef.display();
B bRef = (B)aRef;
//bRef.setMessage(); compilation Error
bRef.display();
C cRef = (C)aRef;
cRef.setMessage("ayaz");
cRef.display();
}
}
interface A
{
void display();
}
class B implements A
{
public void display() {
System.out.println("Am in class B");
}
}
class C extends B
{
String msg = "Am in class C";
@Override
public void display() {
System.out.println(msg);
}
public void setMessage(String s){
msg = s;
}
}
在上面的代碼向下轉換AREF目的是B型無法調用setMessage(的目的後),儘管對調用具有BREF obj顯示,C類的顯示方法被調用。當我們貶低C的Obj時,我們可以打電話給爲什麼?是aRef只指向C類型的對象,我認爲引用不會被複制。向下鑄造對象並調用方法
'類型的變量:'定義數據將如何表示和存儲。 '對象的類型:'通過方法來定義對象的行爲,本質上是使用特定對象可以執行的操作。 – YoungHobbit
據我所知,變量的類型也定義了可以在被引用對象上使用的一組方法 –