破解北京pk10冠亚和值 1比0.95刷流水教程 pk10稳赚技巧方案 北京pk10怎么研究走势 北京pk赛车一天多少期 北京pk赛车历史记录 全天北京pk10赛车计划 北京pk10冠军单双技巧 北京pk两期免费计划 北京pk10冠军公式大全 pk10高手单期人工计划 北京pk10免费人工计划 pk10一天赚300好搞吗 北京pk10杀3码公式 app软件购买北京pk10 北京pk10每天开多少期 北京pk10精准一期计划 北京pk拾全天精准计划 二分pk10怎么玩 pk10怎么引诱别人玩 北京赛車pk10网站 北京pk2期计划在线网站 pk10前三跨度怎么算 赌场最怕什么样的赌法 北京pk赛车彩票官网 怎样控制自己每天赢500 北京pk10正规彩票网站 北京pk10前五1码计划 一无所有怎么白手起家 北京pk10去一尾图解

动物王国的面向对象

时间:2019-01-08   来源:尚学堂   阅读:344

  动物世界最近出现了两个动物,不知道是从哪儿new出来的。

  当他们在大街上走的时候,我们只能看到两团迷雾,看不出来里边具体是什么动物,幸好迷雾上方一直浮着一个标签:Animal。

  让我们知道他们应该是动物,不是怪物。

  ?#24184;?#22825;,这两个?#19968;?#35265;面了,我们暂时称呼他们A1和A2吧。

  A1:哥们,咱俩这么像,你是谁啊

  A2:我一直想搞清楚我到底是谁,我被new出来的时候只知道我是个Animal。

  A1:我也是,我们一起研究下,要不先看看Animal的定义了啥吧

  A2:我看看,有个intage;变量,我访问下试试,System.out.println(A2.age),返回4,看来我4岁了

  A1:这有啥用,这个Animal不是还有个函数吗?能?#25442;?#24471;最?#19981;?#30340;食物,不过它返回“不知道?#20445;?#36825;实在是太搞笑了。

  publicStringgetFavoriteFood(){

  return"不知道";

  }

  A2:恩,确实搞笑,要不我调用一下试试?A2.getFavoriteFood(),它竟然返回了“鱼?#20445;。?#36825;是怎么回事?也许我是一只猫?

  A1:不可能吧,我也试试,A1.getFavoriteFood(),天哪,它返回了“骨头?#20445;?#38590;道我是狗吗?

  (A1,A2这两个?#19968;?#19981;知道,其实这里是“多态”起了作用)

  A2:要不我试试转型成猫?慢着,我先判断一下(A2instanceofCat),是true,好了,转型!Catcat=(Cat)A2

  (神奇的事情发生了,A2周围的迷雾消失了,A2真的是一只猫!)

  A1:原来如此,我也来转型,Dogdog=(Dog)A1,果然我是一只狗啊。

  (两个现了原型的?#19968;?#38750;常高兴)

  Cat:Dog?#37073;?#25105;想起来了,他们的确是通过newCat()把我new出来的,但是给我赋给了Animaila2=newCat(),不知道他们为啥这么干?

  Dog:Cat弟,别管这么多了,走了半天,肚子饿了,我们?#19994;?#19996;西吃吧。

  Cat:你自己不就有个eat方法吗?publicStringeat(Foodd);

  Dog:是啊,可是Food从那里来,得餐馆才能提供啊

  (两个?#19968;?#24448;前走,找餐馆)

  Cat:看!前面?#24184;?#23478;,不过上面写着只允许兔子进入

  publicvoidenterGate(Rabbitr);

  Dog:让我试试能不能进去enterGate(dog),啊,编译错误

  Cat:你不会强?#35889;?#22411;吗?看我的,Rabbitr=(Rabbit)cat;还是编译错误。

  (其实他们不知道,Java是个强类型语言,类型不同,是无法强?#35889;?#22411;的)

  Dog:看,那里有个团队游客入口,我们混进去吧:

  publicvoidenterGat(List<Rabbit>rabbits){

  Iterator<Rabbit>iter=rabbits.iterator();

  while(iter.hasNext()){

  Rabbitr=iter.next();

  r.eat(food);

  }

  }

  Cat:好

  Listlist=newArrayList();

  list.add(cat);

  list.add(dog);

  enterGate(list);

  Dog:没有编译错误,竟?#25442;?#36827;来了,开吃吧

  Cat:怎么回事?运行时还是出来异常啊。。。

  java.lang.ClassCastException:CatcannotbecasttoRabbit

  Dog:走吧,换一家,唉,这家只允许老虎入内,这破程序是谁写的啊?

  CAT:看看前面那家,多大啊,几乎所有的动物都能进去啊,你看哈巴狗和波斯猫正在往里边跑呐。

  Dog:恩,它的门上写着动物都可以入内,我们进去试试吧

  publicvoidenterGate(Animala)

  (Dog和Cat都顺利的进了门,因为他们都是“Animal”,但是进去后就发现,所有的动物都是一团迷雾,再也认不出谁是谁了,Dog和Cat?#30452;?#25104;了A1和A2)

  A2:Dog?#37073;?#20320;还在吗?(没有回音)

  A2:恩,我是谁啊?

  服务员:别?#32842;?#20102;,你是第一次来吧,新人都有这个毛病,老是爱?#32842;?#33258;己的具体类。请提供你最?#19981;?#30340;食物?

  A2:"鱼"(调用getFavoriteFood()方法)

  服务员:"稍等,鱼马上就来"

  A2:“你也不问问我到底是谁吗?”

  服务员:我不管你是谁,只要你是Animal就?#26657;?#20320;不是有个eat方法吗?我们这个餐馆,使用的是“面向接口编程,而不是面向具体类编程?#20445;?#35201;不然,每个动物都判断一下,我们不亏死了。

  A2:奥,我有点明白?#21069;錛一?#25226;我new出来?#38498;螅?#21482;是给我贴上Animal标签的原因了。

相关资讯

  • 北京校区
  • 山西校区
  • 郑州校区
  • 武汉校区
  • 四川校区
  • 长沙校区
  • 深圳校区
  • 上海校区
  • 广州校区
  • 保定招生办

北京海淀区校区(总部):北京市海淀区西三旗街道建材城西路中腾建华商务大厦东侧二层尚学堂
北京京南校区:北京亦庄经济开发区科创十四街6号院1号楼 赛蒂国际工业园
咨询电话:400-009-1906 / 010-56233821
面授课程: JavaEE培训大数据就业班培训大数据云计算周末班培训零基础大数据连读班培训大数据云计算高手班培训人工智能周末班培训人工智能+Python全栈培训H5+PHP全栈工程师培训

山西学区地址:山西省晋中市榆次区大学城大学生活广场万科商业A1座702

郑州学区地址?#27721;幽系?#23376;商务产业园6号楼4层407
咨询电话:0371-55177956

武汉学区地址?#27721;?#21271;省武汉?#34218;?#22799;区江夏大道26号 宏信悦谷创业园4楼
咨询电话:027-87989193

四川学区地址:?#21861;?#24066;高新区锦晖西一街99号布鲁明顿大厦2栋1003室
咨询电话:028-65176856 / 13880900114

网址:http://www.cssxt.com/
咨询电话:0731-83072091

深圳校区地址:深圳市宝安区航城街道航城大道航城创新创业园A4栋210(固戍地铁站C出口)
咨询电话:0755-23061965 / 18898413781

上海尚学堂?#23665;?#26657;区地址:上海?#20852;山?#21306;荣乐东路2369弄45号绿地伯顿大厦2层
咨询电话:021-67690939

广州校区地址:广州市天河区元岗横路31号慧通产业广场B区B1栋6楼尚学堂(地铁3号线或6号线到“天河客运站”D出口,右拐直走约800米)
咨询电话:020-2989 6995

保定招生办公室

地址?#27721;?#21271;省保定市竞秀区朝阳南大街777号鸿悦国际1101室

电话:15132423123

Copyright 2006-2019 北京尚学堂科技有限公司  京ICP备13018289号-19  京公网安备11010802015183  
媒体联系:18610174079 ?#35780;?#24072;  
pk10单双最好方法