繼承中的語法檢查器

繼承中的語法檢查器
下面的語句可以運行
Pet p1 = new Dog();
而下面的語句就無法通過編譯
Dog p2 = new Pet;
這是爲什麼呢?
編譯程序會從等號右邊往左讀,檢查是否符合“is-a”的關係
很顯然,Dog類“是一種”Pet,而Pet不是Dog;

編譯器編譯不通過是想告訴你,Pet不一定是一種Dog
如果你非要這樣寫可以這樣做:
    Dog p2 = (Dog)new Pet;
意思就是告訴編譯器別管了,編譯器就會通過。但是出了事故自行負責。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章