C#父類強制轉換成子類,子類隱式轉換成父類
阿新 • • 發佈:2019-01-09
即Person
p = new Student(); 這種情況下可以把P物件強制轉換。
你可能會問 這樣就是建立的一個student物件 我幹嘛不用student去建立? 這時候就是面向物件的程式設計的理解了。
比如:我的一個方法的引數需要傳入一個學生,那麼你只能傳入一個student ,可是如果我的引數可以傳入一個人person ,那麼我傳進去一個學生student,或者穿進去一個老師teacher 都可以。
void Sing(Student s){.........}//這樣一個方法你只能傳進去一個學生物件說明這個學生怎麼唱歌。。。如果要想要老師唱歌呢?
void Sing(Person p){.....}//這樣的話 我可以傳進去一個人學生,老師,工人等等,
你還問什麼情況需要我轉換
我們假設只有學生可以讀書(微博)。
那麼void Reading(Studeng s){.....}、、你只能給他一個學生的引數,但是我現在手裡的引數只有一個人Person p = new Person();可是這個引數我們不能穿進去啊,應為我們只知道他是一個人,而是什麼人我們不知道,我們需要這個人是學生的時候才可以使用,那麼當p = new Student() 這時候我們明確的知道他是一個人還是一個學生。所以我們就可以把他轉換成學生放到引數裡面。reading(studeng(p)); 當你明確知道這個父類物件的子類型別,確必須使用這個子類型別的時候,你就可以把他強制轉換。
你可能會問 這樣就是建立的一個student物件 我幹嘛不用student去建立? 這時候就是面向物件的程式設計的理解了。
比如:我的一個方法的引數需要傳入一個學生,那麼你只能傳入一個student ,可是如果我的引數可以傳入一個人person ,那麼我傳進去一個學生student,或者穿進去一個老師teacher 都可以。
void Sing(Student s){.........}//這樣一個方法你只能傳進去一個學生物件說明這個學生怎麼唱歌。。。如果要想要老師唱歌呢?
void Sing(Person p){.....}//這樣的話 我可以傳進去一個人學生,老師,工人等等,
你還問什麼情況需要我轉換
我們假設只有學生可以讀書(微博)。
那麼void Reading(Studeng s){.....}、、你只能給他一個學生的引數,但是我現在手裡的引數只有一個人Person p = new Person();可是這個引數我們不能穿進去啊,應為我們只知道他是一個人,而是什麼人我們不知道,我們需要這個人是學生的時候才可以使用,那麼當p = new Student() 這時候我們明確的知道他是一個人還是一個學生。所以我們就可以把他轉換成學生放到引數裡面。reading(studeng(p)); 當你明確知道這個父類物件的子類型別,確必須使用這個子類型別的時候,你就可以把他強制轉換。