上轉型對象:子類創建對象並將這個對象引用賦值給父類的對象。
語法格式:Father f=new Son();
注意事項:
代碼示例:
public class Shangz{ //父類int a=1;int b=2;void cal(){ //父類自己的方法System.out.println(a*b);}public static void main(String[] args) {Shangz s=new ShangzDemo();s.cal(); //上轉型對象調用子類的方法s.err(); //報錯,上轉型對象失去了子類的屬性}}class ShangzDemo extends Shangz{ //子類繼承父類void cal(){ //子類重寫父類的方法System.out.println(a+b);}void err(){ //子類自己的方法System.out.println(a/b);}}下轉型對象:父類引用的對象轉換為子類的類型(強制類型轉換)。
語法格式:
Father f=new Son();
Son s=(Father)f;
錯誤語法:(編譯不報錯,運行報錯)
Father f=new Father();
Son s=Son(f);
注意事項:
代碼例子:
public class Shangz{ //父類int a=1;int b=2;void cal(){ //父類自己的方法System.out.println(a*b);}public static void main(String[] args) {Shangz s=new ShangzDemo();ShangzDemo d=(ShangzDemo)s;d.cal(); //調用了父類的方法d.div(); //對象調用子類的方法Shangz serr=new Shangz();ShangzDemo derr=(ShangzDemo)serr;derr.cal(); //編譯不報錯,運行出現轉換異常}}class ShangzDemo extends Shangz{ //子類繼承父類void cal(){ //子類重寫父類的方法System.out.println(a+b);}void div(){ //子類自己的方法System.out.println(a/b);}}最後:對象轉型在泛型中使用較多。