Re: [問題] 繼承與物件使用的問題?
B 才有的東西,A 不會知道
private A myObject = new B();
所產生的 myObject 是被轉型為 A 的 B,
換句話說是一個被當成 A 來用的 B,也就是一個 A。
想要用 B 才有的功能,就不能把他當成 A,
一定要轉成 B 或是包含 B 的物件。
例如:
if (myObject instanceof B) {
// ((B) myObject).myString
}
※ 引述《henry4343 (henry)》之銘言:
: 各位好
: 請問各位一個問題
: 我宣告了一個class A
: public class A {
: }
: 然後又宣一個class B 繼承 A
: public class B extends A {
: }
: 因為還有其他class也繼承A,所以我在其他class宣告的時候這樣寫
: public class Main {
: //用A來宣告物件,當new時才決定物件型態
: private A myObject;
: public function() {
: myObject = new B();
: 這個時候問題來了......
: 假如我在Class B中寫了一個public String myString = "123";
: 可是myObject.myString會錯誤,好像找不到myString的樣子
: 我一定要把myString寫在Class A裡面
: 才有辦法使用myObject.myString
: 因為我還有其他Class繼承Class A,但每個繼承的Class又希望有自己的物件
: 然後我想要宣告一個全域變數,在我想要的地方在把它宣告成我要的物件
: 我有辦法在各自繼承Class A的Class內寫自己的物件並且使用這種宣告方式來
: 存取各自的物件嗎?
: 或者有其他的方法可以達成我想要的需求?感謝各位大大解答了...
: }
: }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.9.134.102
→
05/23 23:46, , 1F
05/23 23:46, 1F
討論串 (同標題文章)