2017年3月29号课堂笔记不抽烟的香吉士

2017年3月29号星期三空气质量:中度雾霾~重度雾霾

内容:多态,接口,多态的一道面试题

一、多态(文档讲解)

*多态:*同一个操作,由于条件的不同,产生不同的结果!*同一个引用类型,使用不同的实例而执行不同的结果!**多态的两种形式:*01.编译时的多态(方法重载)*feed(Dogdog)*feed(Catcat)*feed(Penguinpenguin)*02.运行时的多态*程序在运行期间,根据不同的参数类型,从而执行不同的对象方法!**多态存在的必要条件:*01.有继承!*02.有重写!*03.父类的引用指向了子类的对象!

*给小宠物喂食01.父类对象作为参数master.feed(dog);父类的引用指向了子类的对象!master.feed(penguin);*/

/***出售宠物*02.返回值是父类类型,可以用子类类型接收

*Petpet=newDog();*小狗是宠物--->OK!*dog=master.salePet(dog);*宠物是小狗???--->*dog=(Dog)master.salePet(dog);--->正确*向下转型:*把父类类型转换成其对应的子类类型!*dog=(Dog)master.salePet(dog);

二、多态(图示)

三、多态Demo

1、老师代码:

1)狗狗实体类:

packagecn.bdqn.bean;

/***狗狗的实体类*/publicclassDogextendsPet{

privateStringstrain;//品种

//无参构造方法publicDog(){}

//带参构造函数publicDog(Stringname,Stringstrain,inthealth,intlove){this.strain=strain;}

publicvoidshowInfo(){super.showInfo();//调用父类的方法System.out.println("品种是:"+this.strain);}

publicStringgetStrain(){returnstrain;}

publicvoidsetStrain(Stringstrain){this.strain=strain;}

/***吃食的方法*/publicvoideat(){System.out.println("小狗狗在吃骨头");}

//出售宠物@OverridepublicDogsalePet(){System.out.println("小狗狗被卖掉了!");returnthis;}

//小狗玩耍的方法publicvoiddogPlay(){System.out.println("小狗玩耍的方法");}

}

2)企鹅实体类:

/***企鹅的实体类*/publicclassPenguinextendsPet{publicStringsex;//性别

//带参构造publicPenguin(Stringname,inthealth,intlove,Stringsex){System.out.println("Penguin的带参构造");this.sex=sex;}

/***重写父类的方法*/@OverridepublicvoidshowInfo(){super.showInfo();System.out.println("性别是:"+sex);}

//无参构造publicPenguin(){}

/***吃食的方法*/publicvoideat(){System.out.println("企鹅在吃鱼");}

//出售的方法@OverridepublicPenguinsalePet(){System.out.println("企鹅被卖掉了!");returnthis;}

//企鹅玩耍的方法publicvoidpenguinPlay(){System.out.println("企鹅玩耍的方法");}

3)宠物类(父类):

//宠物类(父类)publicabstractclassPet{//成员变量子类共有的属性privateStringname;//姓名privateinthealth;//健康值privateintlove;//亲密度

//父类的无参构造publicPet(){}

//带参构造publicPet(Stringname,inthealth,intlove){this.name=name;this.health=health;this.love=love;}

/***输出宠物的信息所有宠物共享的!*/publicvoidshowInfo(){System.out.println("姓名:"+this.name);System.out.println("健康值:"+this.health);System.out.println("亲密度:"+this.love);}

//对应的set和get方法publicStringgetName(){returnname;}

publicvoidsetName(Stringname){this.name=name;}

publicintgetHealth(){returnhealth;}

publicvoidsetHealth(inthealth){this.health=health;}

publicintgetLove(){returnlove;}

publicvoidsetLove(intlove){this.love=love;}

/***有必要写方法体吗?*因为每个宠物的吃饭方法都是不一致的!*/publicabstractvoideat();

//宠物被卖掉的方法publicabstractPetsalePet();

4)所有宠物的主人类:

/***所有宠物的主人类*/publicclassMaster{

/***主人喂养着两个宠物*01.给小狗狗喂食publicvoidfeed(Dogdog){dog.eat();}

02.给企鹅喂食publicvoidfeed(Penguinpenguin){penguin.eat();}主人可以养许多的宠物,每个宠物吃食的方法都是不一样的!那么我们就必须在这个主人类中书写N个喂食的方法!这样很麻烦!怎么解决这个问题?*/

/***多态的实现:*01.父类对象作为参数*/publicvoidfeed(Petpet){pet.eat();}

/***02.返回值是父类类型*主人不开心,卖宠物!*传过来一个宠物,之后卖掉*/publicPetsalePet(Petpet){pet.salePet();returnpet;}

/***模拟主人与宠物进行玩耍*01.先在我们的pet中创建公共的play方法*02.两个子类中去重写**如果子类中的方法名不一致了?子类中有特有的方法?*什么是特有的方法?父类中没有的!*就像根据传入实例的不同,调用不同的对象方法!*这时候我们怎么来区分是哪个宠物?*/publicvoidplay(Petpet){if(petinstanceofDog){//需要把pet向下转型为DogDogdog=(Dog)pet;dog.dogPlay();}if(petinstanceofPenguin){//需要把pet向下转型为PenguinPenguinpenguin=(Penguin)pet;penguin.penguinPlay();}}

5)测试类:

packagecn.bdqn.test;

//测试类importcn.bdqn.bean.Dog;importcn.bdqn.bean.Master;importcn.bdqn.bean.Penguin;

/****多态:*同一个操作,由于条件的不同,产生不同的结果!*同一个引用类型,使用不同的实例而执行不同的结果!**多态的两种形式:*01.编译时的多态(方法重载)*feed(Dogdog)*feed(Catcat)*feed(Penguinpenguin)*02.运行时的多态*程序在运行期间,根据不同的参数类型,从而执行不同的对象方法!**多态存在的必要条件:*01.有继承!*02.有重写!*03.父类的引用指向了子类的对象!*/publicclassPetTest{

publicstaticvoidmain(String[]args){//实现主人给两个宠物喂食Dogdog=newDog();Penguinpenguin=newPenguin();//创建主人实例Mastermaster=newMaster();/***给小宠物喂食01.父类对象作为参数master.feed(dog);父类的引用指向了子类的对象!master.feed(penguin);*/

/***出售宠物*02.返回值是父类类型,可以用子类类型接收*小狗是宠物*dog=master.salePet(dog);*宠物是小狗???dog=(Dog)master.salePet(dog);*向下转型*把父类类型转换成其对应的子类类型!*dog=(Dog)master.salePet(dog);*/

//玩耍的方法master.play(dog);

四、多态的一道面试题Demo(难点,梳理清楚)

老师代码:

1、类A:

packageexam;

publicclassA{

//现在这两个方法是重载publicStringshow(Dd){return"AandD";}

publicStringshow(Aa){return"AandA";}}

2、类B:

publicclassBextendsA{//继承了A

//现在这两个方法是重载publicStringshow(Bb){return"BandB";}

//重写了A的方法publicStringshow(Aa){return"BandA";}}

3、类C:

publicclassCextendsB{

4、类D:

publicclassDextendsB{

5、测试类:

publicclassTestABCD{

publicstaticvoidmain(String[]args){Aa1=newA();Aa2=newB();//父类的引用指向了子类的对象Bb=newB();Cc=newC();Dd=newD();

//AandASystem.out.println(a1.show(b));//AandASystem.out.println(a1.show(c));//AandDSystem.out.println(a1.show(d));//BandASystem.out.println(a2.show(b));子类中有对应的方法执行子类重写之后的方法//BandASystem.out.println(a2.show(c));子类中没有对应的方法执行父类的方法//AandDSystem.out.println(a2.show(d));//BandBSystem.out.println(b.show(b));//BandBSystem.out.println(b.show(c));//子类和父类都没有完全对应c的方法,先继承到父类b传参(自己理解)//AandDSystem.out.println(b.show(d));//子类中没有对应的方法,直接去父类中查询}

五、接口(文档讲解):

*java中不支持多继承!*接口来解决这个问题!**interface:接口!本身就是一个抽象类!*接口中就是提供了某种能力,但是它不关心能力的实现!*接口的特点:*01.接口中所有的方法都是publicabstract修饰的!不允许出现方法体*02.接口的实现类必须去实现接口中所有的方法,除非实现类是抽象类或者接口!*03.接口中所有的属性都是finalstatic修饰的静态常量,必须赋予初始值!*04.接口可以实现接口,只不过实现的方式是用extends*FlyextendsFly2,Fly3=====》多实现并不是多继承!*05.接口不能实例化!也不能有构造方法!**常用的接口方式:*01.接口什么都不定义!!!*02.接口中定义了很多静态常量!*03.接口中定义了很多方法!***对象与类的关系是isa*对象与接口的关系是hasa

六、接口(图示)

七、接口Demo01(小鸟飞行)

1、Bird类继承了宠物类实现了Fly接口中的功能:

importcn.bdqn.dao.Fly;

/***Bird继承了宠物类实现了Fly接口中的功能!*/publicclassBirdextendsPetimplementsFly{

@Overridepublicvoideat(){System.out.println("小鸟在吃虫子");}

//实现了Fly接口中的功能!@Overridepublicvoidfly(){System.out.println("小鸟在飞行");}

2、宠物类(父类):

publicabstractvoideat();

3、接口fly:

packagecn.bdqn.dao;

/****java中不支持多继承!*接口来解决这个问题!**interface:接口!本身就是一个抽象类!*接口中就是提供了某种能力,但是它不关心能力的实现!*接口的特点:*01.接口中所有的方法都是publicabstract修饰的!不允许出现方法体*02.接口的实现类必须去实现接口中所有的方法,除非实现类是抽象类或者接口!*03.接口中所有的属性都是finalstatic修饰的静态常量,必须赋予初始值!*04.接口可以实现接口,只不过实现的方式是用extends*FlyextendsFly2,Fly3=====》多实现并不是多继承!*05.接口不能实例化!也不能有构造方法!**常用的接口方式:*01.接口什么都不定义!!!*02.接口中定义了很多静态常量!*03.接口中定义了很多方法!***对象与类的关系是isa*对象与接口的关系是hasa**///publicinterfaceFlyextendsFly2,Fly3{publicinterfaceFly{/***能力*/voidfly();

4、接口fly2:

publicinterfaceFly2{

voidfly2();}

5、接口fly3:

publicinterfaceFly3{

voidfly3();}

6、测试类:

importcn.bdqn.bean.Bird;

publicclassBirdTest{

publicstaticvoidmain(String[]args){Birdbird=newBird();bird.eat();bird.fly();//功能

八、接口Demo02(防盗门)

1、门的抽象类(开门,关门两个方法):

/***门*不同的门开门关门的方式不同*我们不能把功能写死**门是抽象类*卷帘门*木门*铁门*玻璃门*/publicabstractclassDoor{//开门publicabstractvoidopen();

//关门publicabstractvoidclose();

2、防盗的接口(上锁,开锁两个方法):

/***接口只是提供了某些功能**防盗门具有防盗的功能*防盗窗具有防盗的功能**上锁和开锁*/

publicinterfaceLockInterface{

//上锁voidlockUp();

//开锁voidlockDown();}

3、防盗门类(继承门,实现防盗接口):

importcn.bdqn.dao.LockInterface;

/****防盗门首先是一个门然后具有防盗的功能*/publicclassPanDoorextendsDoorimplementsLockInterface{

@OverridepublicvoidlockUp(){System.out.println("门被锁上了");}

@OverridepublicvoidlockDown(){System.out.println("锁被打开了");}

@Overridepublicvoidopen(){System.out.println("门被打开了");}

@Overridepublicvoidclose(){System.out.println("门被关上了");}

4、测试类:

importcn.bdqn.bean.PanDoor;

publicclassTestDoor{publicstaticvoidmain(String[]args){

PanDoordoor=newPanDoor();door.lockDown();door.open();door.close();door.lockUp();}

THE END
1.宠物解说10种可爱宠物你喜欢哪个哺乳动物萌宠日常猫咪宠物解说 10种可爱宠物 你喜欢哪个2024-11-14 10:23:29 东北小霞的乡村生活 四川 举报 0 分享至 0:00 / 0:00 速度 洗脑循环 Error: Hls is not supported. 视频加载失败 东北小霞的乡村生活 133粉丝 分享东北的农村生活,嫁给了隔壁村,经常回娘家,记录老爸养柞蚕的全过程,感谢大家的喜欢和支持 06:...https://www.163.com/v/video/VXG12E0VD.html
2.小型犬品种大全萌宠视频宠物异闻录关注https://tv.sohu.com/v/dXMvMzM4NDUwNjQ5LzQ4ODIwMDAxMy5zaHRtbA==.html
3.多国宠物市场爆发!这个品种的狗狗,需求暴增900%!(含视频)这个品种的狗狗,需求暴增900%!央视财经《天下财经》栏目视频 宠物食品处于极度刚需,是宠物经济中最为活跃的部分,企业间竞争最为激烈,并细分为肠胃健康、亮毛美毛、强健骨骼和减肥减脂各种功效。 近年来,宠物食品已无限接近人类的需求,有些公司甚至需要研究人员亲自试吃以确认口感。https://news.sina.cn/2020-12-28/detail-iiznctke8954211.d.html
4.自己养鸡的全面视频指南宠物教程养鸡不仅是一种有益健康的爱好,还能为你的家庭提供新鲜、营养丰富的鸡蛋。如果你正在考虑养鸡,本指南将为你提供一步步的视频教程,帮助你开始养鸡的旅程。 第1 步:选择合适的品种 在养鸡之前,你需要选择适合你的生活方式和空间需求的鸡品种。视频教程将介绍流行品种的优点和缺点,帮助你做出明智的选择。 https://www.qinpa.cn/25018.html
1.xxapp.yhryj.com/kpf93425375.htm期间,张芳也收到过内容为“体检”及“入职”的邮件,还接到了机场工作人员的电话给自己讲解机场入职的流程及进行体检所需的材料。此外,袁某曾让张芳去民航...同一天发布的视频中,普里戈任的表态要温和得多。他解释称,要求瓦格纳士兵向俄罗斯首都莫斯科进军的命令并非针对俄罗斯领导人,而是避免“瓦格纳被摧毁”,并追究...http://xxapp.yhryj.com/kpf93425375.htm
2.小哈巴狗品种的家庭宠物狗mov格式视频下载更多相似视频 小哈巴狗品种的家庭宠物狗 - 00:37 1080P 小哈巴狗品种的家庭宠物狗 - 00:29 1080P 小哈巴狗品种的家庭宠物狗 - 00:29 1080P 坐在绿草地上的小哈巴狗小狗 - 00:35 1080P 坐在绿草地上的小哈巴狗小狗 - 00:12 1080P 坐在绿草地上的小哈巴狗小狗 - 00:29 1080P 坐在绿草地上的...https://xsj.699pic.com/shipin/01i8t2.html
3.无毛猫视频因格式不支持或者服务器或网络的问题无法加载。无毛猫-宠物品种百科| 2024-06-13 16:52广电媒体 央视网 北京 上海 天津 广东 广西 四川 河北 湖南 内蒙古 河南 海南 云南 新疆 江苏 安徽 浙江 湖北 福建 江西 中央媒体 人民网 人民网贵州频道 新华网 新华网贵州频道 中国新闻网 中国网 国际在线...https://www.gzstv.com/v/4da7c6dc1d24479893845c6914cd6b63
4.宠物解说:这些狗狗品种大全,你想养哪只?高清在线观看PP视频PP视频为您提供宠物解说:这些狗狗品种大全,你想养哪只?高清视频在线观看,宠物解说:这些狗狗品种大全,你想养哪只?主要内容:最搞笑视频君https://m.pptv.com/show/R0MenQVr2xl8ibmI.html
5.宠馨领地宠物猫狗品种及宠物图片宠物视频宠馨领地网专门为爱宠人士提供丰富的宠物知识,宠物品种大全、宠物百科大全、宠物饲养护理、宠物美容、宠物训练,宠物医疗等养宠知识,要了解宠物知识百科、分享养宠乐趣就到宠馨领地。宠物猫咪狗狗品种知识及猫狗图片视频,宠物猫狗喂养护理,训练,医疗,孕事,病症问题答案百http://www.8a889.com/
6.dev20315.shangjinyang.cn/mmmj57296452.shtml张女士告诉民警,她做兼职找到一份刷单返利的工作,“对方说不用坐班,在家刷几个视频能赚到钱”。...女友带上链子成为宠物小说 60.97MB 954好评 美妇与子伦亲小说情迷都市 精东影业葫芦娃蛇精总洞源...1688黄页网品种大全2021 951.98MB 228好评 喷泉1v3阿司匹林 国内精品一线二线三线在哪里 欧美另类...http://dev20315.shangjinyang.cn/mmmj57296452.shtml
7.www.hongchen三,东北少妇不带套内对白,畀人捅女人积免费视频 四,五月天BBwBBw ,正能量不良网站推荐下载 五,...甘雨的宠物史莱姆在线播放 89.57MB 05%好评02人) 1998黄片免费视频 亚洲无吗视频 男女h黄网站 ...日本水蜜桃品种岭风 饥渴淫妇挨操成瘾视频 我艹白丝老师喷白浆视频 91.73MB 91%好评4181人) 久久...http://www.hongchen-group.cn/xxxr49349473.htm
8.家庭宠物必备不同猫品种的降问题概览在选择一只猫做家中宠物时,了解它所属于的品种及其可能面临的健康问题至关重要。不同的猫品种具有各自独特的外观特征、性格和生活习惯,但它们也可能会因为遗传而易于患病。此篇文章将为您提供一个全面且详细的猫品种大全及易发病情况,以帮助您更好地理解并照顾您的毛孩。 https://www.xh7torxpi.cn/ren-wu/440289.html
9.猫的荣耀揭秘喵星最闪耀的十位英雄五、设计师如何创造出“超级美”的宠物品种? 通过精心挑选不同的颜色模式和体型比例,设计师们将自然界中的优点融入到了各个角落,使得这“十大”成了真正意义上的艺术品,不仅拥有迷人的外观,还能带给人们无尽的心情触动。 六、“喜爱者”眼中的“完美宠物” ...https://www.lynecx.cn/chong-wu-gou/478361.html