[問題] x xy =new y();

作者: LouisFFs (願翱翔)   2015-08-02 21:29:42
暑假到了 小弟想說 學學看c#
自學到抽象(abstract)網路找資源學
可是有一個問題 一直想不出來
敢問各位大大此問題(問題太欠噓 在此sor 想知道ans)
Q:
寫了一個 抽象的 person 裡面寫了幾個函式
我再讓student繼承
之後我在student裡面多寫了一個函式
叫studentID好了(person裡面沒有寫喔)
最後我在主函式
person ps1 = new student("A123456789"); //建構子建造studentID必須的字串
但是ps1.沒顯示出可選擇studentID
我知道在上面那種宣告方法 指向的位址 只有person的函式
可是有方法能讓ps1.studentID()能使用嗎??
除了 student s1 = new student("A123456789");
謝謝各位大大的回答!!
作者: johnpage (johnpage)   2015-08-02 21:33:00
繼承,如果可以哪樣使用,那叫繼承
作者: LouisFFs (願翱翔)   2015-08-02 21:35:00
所以沒方法嗎?只能student s1=new student?
作者: GoalBased (Artificail Intelligence)   2015-08-02 22:04:00
person就一定有studentID嗎? 建議先理解一下什麼是繼承,還有其他OO基礎觀念
作者: LouisFFs (願翱翔)   2015-08-02 22:15:00
OO?!
作者: wanderer1412 (.........)   2015-08-02 22:42:00
OO is Object Oriented
作者: LouisFFs (願翱翔)   2015-08-02 23:13:00
謝謝大大!
作者: wenyonba (射後不理很XX啊!!!!)   2015-08-03 09:11:00
父類別怎麼可能知道子類別新增了什麼方法...你想實現的功能叫多型(polymorphism),先K一下書吧!
作者: LouisFFs (願翱翔)   2015-08-03 14:11:00
我想知道的不是多型~___~((謝謝大大
作者: ssccg (23)   2015-08-03 14:57:00
如果你確定ps1就是Student: if (ps1 is Student)
作者: LouisFFs (願翱翔)   2015-08-03 15:00:00
好的 用is 去確認 !true
作者: ssccg (23)   2015-08-03 15:05:00
可以用 ((Student) ps1).studentID() 這叫downcast
作者: LouisFFs (願翱翔)   2015-08-03 18:40:00
哦哦哦 對齁 忘記有轉換了謝謝大大
作者: YahooTaiwan (超可愛南西我老婆)   2015-08-03 19:20:00
需要這樣寫,代表你的繼承關係有問題
作者: wenyonba (射後不理很XX啊!!!!)   2015-08-04 20:59:00
是很好奇說,假設你需要的不是多型,你在操作時也是要呼叫只有子類別有的新方法,那你為什麼要用父類別的變數去new

Links booklink

Contact Us: admin [ a t ] ucptt.com