向上轉型
public class StringDemo{public static void main(String [] args){StringC str = new StringA();//對象的向上轉型
str.getInfo();
}
}
class StringA extends StringC{public void getInfo(){System.out.println("******** StringA **********");
}
}
class StringC{public void getInfo(){System.out.println("********** String *********");
}
}
輸出:******** StringA **********
向上轉型多用于統一參數或返回值
public class StringDemo{public static void main(String [] args){StringDemo strdemo = new StringDemo();
strdemo.func(new StringA());//子類A
strdemo.func(new StringB());//子類B
StringC stra = strdemo.demo("A");
StringC strb = strdemo.demo("B");
stra.getInfo();
strb.getInfo();
}
public void func(StringC str){//父類C,可用效的簡潔代碼,重載的過多書寫
str.getInfo();
}
public StringC demo(String str){if (str.equals("A")) { return new StringA();
}else if(str.equals("B")){ return new StringB();
}
return new StringC();
}
}
class StringA extends StringC{public void getInfo(){System.out.println("******** StringA **********");
}
}
class StringC{public void getInfo(){System.out.println("********** String *********");
}
}
class StringB extends StringC{public void getInfo(){System.out.println("********* StringB *********");
}
}
輸出結果為:
******** StringA **********
********* StringB *********
******** StringA **********
********* StringB *********
向下轉型
public class StringDemo{public static void main(String [] args){StringC str = new StringA();// 先向上轉型
str.getInfo();
StringA stra = (StringA) str;//再向下轉型
stra.getInfo();
stra.strlenA();//才能使用子類的特殊方法
}
}
class StringA extends StringC{public void getInfo(){System.out.println("******** StringA **********");
}
public void strlenA(){System.out.println("********* 打印字符長度 ********");
}
}
class StringC{public void getInfo(){System.out.println("********** String *********");
}
}
輸出:
******** StringA **********
******** StringA **********
********* 打印字符長度 ********
向下轉型需要要先向上轉型,讓父類與子類有聯系了,父類才能變成子類
是否可以向下轉型,可以先用 instanceof 關鍵字判斷
public class StringDemo{public static void main(String [] args){StringC str1 = new StringC();// 不向上轉型
System.out.println(str1 instanceof StringC);
System.out.println(str1 instanceof StringA);
StringC str2 = new StringA();// 向上轉型
System.out.println(str2 instanceof StringC);
System.out.println(str2 instanceof StringA);
}
}
class StringA extends StringC{public void getInfo(){System.out.println("******** StringA **********");
}
public void strlenA(){System.out.println("********* 打印字符長度 ********");
}
}
class StringC{public void getInfo(){System.out.println("********** String *********");
}
}
輸出:true、false、true、true
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
網站欄目:java對象的向上、向下轉型-創(chuàng)新互聯
分享URL:http://sd-ha.com/article14/poide.html
成都網站建設公司_創(chuàng)新互聯,為您提供Google、網站制作、靜態(tài)網站、關鍵詞優(yōu)化、網站改版、自適應網站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯