java-向下转型-向上转型(通俗事例)

mac2022-06-30  108

场景:
- 1、太子被贬民间,这时会失去太子的所有权利,以草民的身份生活(向上转型), - 2、但当皇帝于心不忍时,召他回宫 - 3、一个草民冒充太子回来,犯欺君之罪,被杀。(报错:类型转换异常) - 4、历尽千辛,太子回归,继续风花雪月
类实现:
public class DownCast { public static void main(String[] args) { //1.大阿哥被贬民间成为草民(向上转型) 草民 大阿哥 = new 太子(); //大阿哥.风花雪月();//成为草民后无法风花雪月(向上转型,信息丢失) 大阿哥.吃馒头();//但可以吃馒头 //2.皇帝于心不忍时,召太子回宫 System.out.println("皇帝诏曰:大阿哥即可回京......"); //3.草民二狗需要冒充太子,被杀(报错:类型转换异常) 草民 二狗 = new 草民(); try { ((太子) 二狗).风花雪月();//ClassCastException } catch (Exception e) { System.out.println("经查证:二狗冒充太子,罪犯欺君,斩无赦!"); } //4.被皇帝召回继续做太子,又能风花雪月了(向下转型,信息回归) ((太子) 大阿哥).风花雪月(); } } class 草民 { public void 吃馒头() { System.out.println("吃馒头"); } public void 喝稀饭() { System.out.println("吃馒头"); } } class 太子 extends 草民 { public void 风花雪月() { System.out.println("太子在风花雪月"); } }
控制台输出:
吃馒头 皇帝诏曰:大阿哥即可回京...... 经查证:二狗冒充太子,罪犯欺君,斩无赦! 太子在风花雪月

转载于:https://www.cnblogs.com/toly-top/p/9782027.html

最新回复(0)