標籤

二元樹 (1) 字串常數池 (1) 投資 (3) 每月損益 (37) 例外處理 (1) 泛型 (2) 股票 (15) 指標 (5) 英文 (8) 基本資料型別 (1) 期貨 (1) 程式交易 (10) 量化投資 (5) 亂亂寫 (3) 概念 (3) 資料結構 (3) 演算法 (3) 數學 (3) 轉型 (1) AMA (1) ArrayList (1) assert (1) BeautifulSoup (1) C/C++ (8) casting (1) ClassCastException (1) classpath (1) Collection (4) Comparable (1) comparTo() (1) constructor (1) database (3) Debian (1) Dropbox (2) EA (2) enum (1) equals() (2) exception (3) extends (1) ffmpeg (1) final (1) Git (1) HashMap (1) HashSet (1) hasNext() (1) HTS (3) instanceof (1) IS-A (1) Iterator (1) JAVA (43) length (1) Linux (31) List (1) Mac (6) Map (1) ML (2) MT4 (6) MySQL (2) next() (1) NullPointerException (1) Number (1) Numpy (2) OpenCart (1) OpenCV (3) OSX (1) overloading (1) overriding (3) pandas (2) PHP (8) PriorityQueue (1) Python (11) Queue (1) random() (1) reverse() (1) Samba (1) SCJP (21) sqrt() (1) synchronized (1) talib (1) ufw (1) uTorrent (1) var-args (2) VHF (1) vim (2) Yhoo知識+ (4)

2012年10月25日 星期四

參考變數的轉型

class A{}
class B extends A{}
public class CastTest{
        public static void main(String[] args){
                A a = new B();
                B b = (B)new A();    //不能通過IS-A的測試:A IS-A B
                B bb = (B)a;
                a = (A)new B();
        }
}

output:
Exception in thread "main" java.lang.ClassCastException: A
at CastTest.main(CastTest.java:6)

所以可證明物件轉型是看參考變數所指向的物件


==========================

class A{ void showA(){System.out.println("A");} }
class B extends A{ void showB(){System.out.println("B");} }
public class CastTest{
        public static void main(String[] args){
                A a = new B();
                a.showA();
                ((B)a).showB();   //a看不到showB(),必須向下轉型
        }
}

output: 
A
B

method執行看型別,A要執行B的mothed,必須向下轉型成B

沒有留言:

張貼留言