2011-10-23 169 views
1

如果我們有這樣的:概念實例

class Car 
{ 
    public void mCar() 
    { 

    } 

} 

class Audi : Car 
{ 
    public void mAudi() 
    { 

    } 
} 

,並在其它的類,我們有:

Car x = new Audi(); 

那麼我們只能訪問MCAR(),而不是mAudi() 。 我的問題是,有什麼區別:

車x =新奧迪();

and

Car x = new Car();

+1

'mKola()'從哪裏來? – voidStern

+0

@voidStern對不起,我在我的程序中沒有使用英語,當我在這裏寫字時,我總是忘了翻譯一些東西。現在編輯。 –

回答

2

不同的是

Car = new Car(); 

爲您提供了一個新的Car對象(它僅知道的mCar()),而

Car = new Audi(); 

給你一個全新奧迪的對象,這也是一個汽車對象(它知道mCar()mAudi())。

+0

但是,如果它是奧迪對象,那麼爲什麼它不能訪問mAudi()? –

+2

@ user966638:It * can *。你不能寫'x.mAudi()',因爲引用''x'本身就是'Car'類型,但是你可以編寫'((Audi)x).mAudi()',它將'x'輸入'Audi'。相反,如果你有'Car x = new Car();',那麼'((Audi)x)'是無效的。 (注意:這個細節取決於語言,你的代碼看起來像C#,所以我已經去掉了。) – ruakh

+0

啊哈,這有幫助。 Tnx :) –