我是新來的java和我在鑄造上有一些問題。 我有一個名爲Parent的類,以及一個名爲Children的類,Children類是Parent的子類。關於在java中鑄造問題
public class Parent
{
int age;
String occupation;
public void print()
{
System.out.println("My age is:"+ age + "and i am a:" + occupation);
}
}
public class Children extends Parent
{
int height;
public static void main(String args[])
{
Children c = new Children();
Parent p = new Parent();
p=c;
c=(Children) p;
/**Here***/
}
}
我的問題是,當我在鑄造後添加p.XXX時,我只能看到例如p的年齡和職業。當我做c.xxx時,我可以看到所有的年齡,職業和身高。 我以爲當我做p = c時,p現在被認爲是兒童課的一個實例,不是嗎?如果是,那麼爲什麼我沒有看到高度整數可訪問? 當我做c =(Children)p時,一個Parent類的實例被分配給一個Children類的實例,並且由於Parent實例沒有選項,所以我們爲什麼要從父類轉換爲子類, ?
那麼p = c的用法是什麼? –
@qwrqwr:它將'p'的值設置爲與'c'的值相同(在那個時間點)。就是這樣。 –
只是一個運行時操作,它會檢查鑄造對象是否可以視爲所請求類型的對象。對象本身保持不變。在你的情況下,c =(Child)p只有在p的實例實際上是Child或某個子類的實例時纔有效。 它被稱爲賦值兼容性,可以在運行時(通過「instanceof」運算符或Class.isAssignableFrom()方法執行此類轉換之前)進行檢查。 – Matt