日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java父类转换成子类_【转】java 父类与子类的转换

發布時間:2025/4/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java父类转换成子类_【转】java 父类与子类的转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近同事調的一個服務報錯,查看后是日期之間轉換出的問題。代碼里是把 java.sql.Date 類型的對象 強制轉換為

java.sql.Timestamp 類型的對象。報java.lang.ClassCastException。

代碼:

java.sql.Date date = new

java.sql.Date(2011,9,15);

Timestamp ts =

(Timestamp)date;

這樣的代碼根據就編譯不過。因為查看Java的Api,會發現 java.sql.Timestamp 繼承

java.util.Date,同樣 java.sql.Date 也繼承 java.util.Date

。兩個沒有繼承關系的類對象是不能進行轉換的。

解決辦法:

java.sql.Date date = new java.sql.Date(2011,9,15);

Timestamp ts = new

Timestamp(date.getTime());

借此也想深入研究一下Java的父類與子類之間轉換的問題。

例子:

父類:

public class ParentClass {

private String privateStr = "privateStr var";

public String ?publicStr = "publicStr var";

public String sayHello(){

return "hello , this is a parentclass's function";

}

}

子類:

public class ChildClass extends ParentClass {

private String inStr = "hello icepeter";

public String ?outStr = "hello everyone";

public String goHome(){

return "go home!";

}

}

測試類:

public class Test {

public static void main(String[] args) {

//測試一:子類轉父類

ParentClass pc1 = new ChildClass(); ?//上溯造型

System.out.println(pc1.publicStr);

//System.out.println(pc1.privateStr); 訪問父類里的私有變量出錯

System.out.println(pc1.sayHello());

//System.out.println(pc1.goHome()); ?訪問子類里的公有方法出錯

//System.out.println(pc1.outStr); ?訪問子類的變量出錯

//測試二:父類轉子類

//第1種情況 ?會拋出java.lang.ClassCastException:

ParentClass pc2 = new ParentClass();

ChildClass cc2 ?= (ChildClass) pc2;

//這里必須強制類型轉換 //下溯造型

System.out.println(cc2.publicStr);

System.out.println(cc2.outStr);

System.out.println(cc2.sayHello());

System.out.println(cc2.goHome());

//第2種情況

ChildClass ?ccS = new ChildClass();

ParentClass pc3 = ccS;

ChildClass cc3 ?= (ChildClass) pc3;

//這里必須強制類型轉換

//下溯造型

System.out.println(cc3.publicStr);

System.out.println(cc3.outStr);

System.out.println(cc3.sayHello());

System.out.println(cc3.goHome());

}

}

總結:

果一個對象與另一個對象沒有任何的繼承關系,那么他們就不能進行類型轉換。如果要把一個派生類對象賦值給基類對象這個稱為上溯造型。如果要把基類對象賦值

給派生類對象就需要強制類型轉換,這稱為下溯造型,下溯造型有一些危險,要安全的進行下溯造型有一個前題,基類對象必須是從派生類對象中上溯過來的。

總結

以上是生活随笔為你收集整理的java父类转换成子类_【转】java 父类与子类的转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。