• 两岸民心相亲不可违逆(观沧海) 2019-06-24
  • 习近平新时代中国特色社会主义思想为解决人类问题贡献中国智慧 2019-06-22
  • 反击!欧盟成员国一致支持对美28亿欧元产品征收报复性关税 2019-06-22
  • 专访李毅立:走进国家 了解国情 续写中华情 2019-06-08
  • 现在,表面上看,很多城市绿树成荫,花卉草地到处都是,实际上地下空间已经掏空,建了车库、地下商城,雨水根本渗不下去。 2019-06-08
  • 你反来复去说1+1=2,真痴呆了?你应该讲点其他的吧,譬如,1+1=2,是客观事实还是规律,是真理还是谬误。 2019-06-05
  • 蜈蚣精的出游必备战靴 旅行路上皆战场 2019-06-05
  • 《法医秦明2》“长腿CP”最萌身高差吸睛 剧情高能 2019-06-04
  • 【春到渭南】随手拍渭南各地区春景,一贴看尽渭南春色! 2019-06-04
  • 如何像皇帝、老佛爷那样避个暑? 2019-05-30
  • 印度总理寓所附近现UFO?网友:外星人也想看莫迪 2019-05-21
  • 人民网评:建设一支生态环境保护铁军 2019-05-21
  • 这三个史无前例,让美国有点懵了 2019-05-18
  • 唐嫣蜡像入驻上海杜莎夫人蜡像馆--旅游频道 2019-05-18
  • 生活调查:过午不食可以养生减肥是真的吗? 2019-05-18
  • 中国冰球一姐:

    北京 切换校区

    全国24小时免费热线

    400-009-1906

    动物王国的面向对象

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

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

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

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

      有一天,这两个家伙见面了,我们暂时称呼他们A1和A2吧。

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

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

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

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

      A1:这有啥用,这个Animal不是还有个函数吗?能够获得最喜欢的食物,不过它返回“不知道”,这实在是太搞笑了。

      publicStringgetFavoriteFood(){

      return"不知道";

      }

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

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

     ?。ˋ1,A2这两个家伙不知道,其实这里是“多态”起了作用)

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

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

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

     ?。礁鱿至嗽偷募一锓浅8咝耍?/span>

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

      Dog:Cat弟,别管这么多了,走了半天,肚子饿了,我们找点东西吃吧。

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

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

     ?。礁黾一锿白?,找餐馆)

      Cat:看!前面有一家,不过上面写着只允许兔子进入

      publicvoidenterGate(Rabbitr);

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

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

     ?。ㄆ涫邓遣恢?,Java是个强类型语言,类型不同,是无法强制转型的)

      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:没有编译错误,竟然混进来了,开吃吧

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

      java.lang.ClassCastException:CatcannotbecasttoRabbit

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

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

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

      publicvoidenterGate(Animala)

     ?。―og和Cat都顺利的进了门,因为他们都是“Animal”,但是进去后就发现,所有的动物都是一团迷雾,再也认不出谁是谁了,Dog和Cat又变成了A1和A2)

      A2:Dog兄,你还在吗?(没有回音)

      A2:恩,我是谁???

      服务员:别琢磨了,你是第一次来吧,新人都有这个毛病,老是爱琢磨自己的具体类。请提供你最喜欢的食物?

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

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

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

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

      A2:奥,我有点明白那帮家伙把我new出来以后,只是给我贴上Animal标签的原因了。

    相关资讯

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

    北京海淀区校区(总部):北京市海淀区西三旗街道建材城西路中腾建华商务大厦东侧二层尚学堂
    北京京南校区:北京亦庄经济开发区科创十四街6号院1号楼 赛蒂国际工业园
    咨询电话:400-009-1906 / 010-56233821
    面授课程:?JavaEE+微服务+大数据? ???大数据+机器学习+平台架构?????Python+数据分析+机器学习??人工智能+模式识别+强化学习???WEB前端+移动端+服务端渲染

     

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

    郑州学区地址:河南电子商务产业园6号楼4层407
    咨询电话:0371-55177956

    武汉学区地址:武汉市东湖高新区光谷金融港B22栋11楼
    咨询电话:027-87989193

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

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

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

    上海尚学堂松江校区地址:上海市松江区荣乐东路2369弄45号绿地伯顿大厦2层
    咨询电话:021-67690939

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

    保定招生办公室

    地址:河北省保定市竞秀区朝阳南大街777号鸿悦国际1101室

    电话:15132423123

    Copyright 2006-2019 北京尚学堂科技有限公司  京ICP备13018289号-19  京公网安备11010802015183  
    媒体联系:18610174079 闫老师  

    Java基础班,免费试学三周

  • 两岸民心相亲不可违逆(观沧海) 2019-06-24
  • 习近平新时代中国特色社会主义思想为解决人类问题贡献中国智慧 2019-06-22
  • 反击!欧盟成员国一致支持对美28亿欧元产品征收报复性关税 2019-06-22
  • 专访李毅立:走进国家 了解国情 续写中华情 2019-06-08
  • 现在,表面上看,很多城市绿树成荫,花卉草地到处都是,实际上地下空间已经掏空,建了车库、地下商城,雨水根本渗不下去。 2019-06-08
  • 你反来复去说1+1=2,真痴呆了?你应该讲点其他的吧,譬如,1+1=2,是客观事实还是规律,是真理还是谬误。 2019-06-05
  • 蜈蚣精的出游必备战靴 旅行路上皆战场 2019-06-05
  • 《法医秦明2》“长腿CP”最萌身高差吸睛 剧情高能 2019-06-04
  • 【春到渭南】随手拍渭南各地区春景,一贴看尽渭南春色! 2019-06-04
  • 如何像皇帝、老佛爷那样避个暑? 2019-05-30
  • 印度总理寓所附近现UFO?网友:外星人也想看莫迪 2019-05-21
  • 人民网评:建设一支生态环境保护铁军 2019-05-21
  • 这三个史无前例,让美国有点懵了 2019-05-18
  • 唐嫣蜡像入驻上海杜莎夫人蜡像馆--旅游频道 2019-05-18
  • 生活调查:过午不食可以养生减肥是真的吗? 2019-05-18
  • 矮木头电子 打法快3计划 我叫mt4冰封峡谷 雷霆万钧电影在线观看2012 魔兽世界nga数据库 尼斯湖水怪书 127大乐透中奖金额 广东36选7好彩3奖金 守望先锋黄漫 恋上复仇三公主 皮耶罗正式加盟悉尼fc 方舟手游 旺旺重庆时时彩计划群 6场半全场奖金计算 内蒙古十一选五玩法 河北快三和值人工计划网站