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.我不是一只高贵的狗听到花花的惨烈叫声,主人赶忙用棍子赶跑了那只德国犬,这时我想到了“狗仗人势”这个成语,尽管,我知道这是人类骂人的话,但对于我受伤的腿来说,快点包扎才是上策。 在宠物医院里,我的腿被医生告知是骨折。躺在病床上,我不禁想起了小黑,“也不知道,这家伙怎么样了?” ...http://www.lczf.gov.cn/txlc_5/lcyx_680/glwx_685/201201/t20120112_1148868.shtml
2.宠物品种的深远意义:探索品种的内涵和影响宠物品种在广阔的宠物世界中,品种是一个既迷人又备受争议的概念。它们代表着我们对不同动物特征的培育,这些特征既具有美学意义,又具有功能意义。宠物品种的意义远远超出了仅仅一个标签,它深刻地影响着我们与伴侣动物的关系、它们的福利以及我们对动物界的理解。 塑造人类与动物的关系 ...https://www.qinpa.cn/25074.html
1.为什么人们喜欢养狗而不是其他动物作为宠物有些人认为,狗狗是人类最忠实的朋友之一。它们非常聪明、友好和忠诚,可以成为家庭的一员并与家人分享生活经验。此外,许多人还觉得拥有一只狗会增加他们的运动量和平衡能力。但是也有人更喜欢猫或其他动物做为宠物,因为这些动物可能更独立或更容易照顾 因为狗狗是人类最亲密的伙伴之一,它们可以陪伴我们度过许多美好的时...https://www.1lhyh3ij.cn/tu-pian-zi-xun/403720.html
2.喵呜探秘猫咪的多样性大探险在这个世界上,有着各种各样的生物,每一种生物都有其独特的特点和功能。动物界中的一员——宠物猫,也拥有令人惊叹的多样性。从体型大小到毛色,从行为习惯到个性气质,无论是哪一个方面,都能找到数不胜数的不同。 三、品种之美:展现不同的面貌 每一只宠物猫都是自然选择和人类选育下来的结果,它们展示了由基因...https://www.gurotsr.cn/geng-duo-chong-wu/558289.html
3.探秘宠物猫的多样性它们究竟有多少种类因此,对于“宠物猫有多少种类?”这样的疑问,其实答案远比数字本身更加深远——它代表了一段跨越时间与空间的心灵交流之旅。在未来的岁月里,只要人类存在,那么这些美丽又智慧的小生命将继续留下自己的足迹,为我们的世界增添光彩。https://www.wazxzpm.cn/chong-wu-zi-xun/374855.html
4.宠物猫介绍小巧灵动的伴侣全面了解宠物猫的世界一、宠物猫的特点 首先,需要了解的是,宠物猫是一种经过驯化的人类社会中的家畜。它们与其他动物相比,拥有更强大的适应能力和较高的情感智商。这使得它们能够很好地融入人类社会,并与主人建立深厚的情感联系。 二、不同的品种 随着时间的推移,不同国家和地区孕育了多样化的猫咪品种,每一种都有其独特之处。例如: ...https://www.lynecx.cn/chong-wu-gou/477833.html
5.小巧可爱的伴侣探索可认主的小型异宠物世界一、探索可认主的小型异宠物世界 在这个日益忙碌的时代,越来越多的人选择拥有小型异宠作为他们生活中的小伙伴。这些宠物不仅因为它们体型小巧而受到人们喜爱,而且因为它们能够与主人建立深厚的情感联系,被称作“可以认主”的宠物。今天,我们就来探索一下这一现象背后的https://www.gkklenewvt.cn/chong-wu-zi-xun/154602.html
6.探索猫猫种类的丰富世界从家猫到异国奇珍家庭中的常见宠物:家猫 家猫是人类历史上最早驯化的动物之一,广泛分布在全球多个国家。它们以其温顺、智慧和独立性而受到人们喜爱。家猫有超过一百种颜色和模式的毛发,并且可以通过遗传选择来培育出各种不同的品种,如英国短毛、美国波斯等。 独特的野生狩猎者:非洲大马哥 ...https://www.godyood.cn/chan-qu/695426.html
7.关于“异宠”那些你不知道的事“异宠”与一般意义上的猫、犬等伴侣动物的最大差异在于,它们并未经过人类成千上万年的驯化,在动物性上仍属于野生动物。 海关截获的活体火蝾螈。 野生动物的生物学特性决定了其不适合作为宠物饲养。它们的攻击性、毒性以及携带的多种病原微生物还可能给人类健康造成严重甚至致命的影响。目前已知的大约200种人畜共患...https://www.xakpw.com/single/29646
8.宠物王蛇种类山王蛇是有毒的一种蛇类***是我国特有的鳄鱼品种,是世界体型最小的鳄鱼之一,只有1-2米长。***是凶猛的肉食性动物,特别聪明,懂得一些捕食技巧。它在捕食蛇时会选择像段木头一样趴着不动,等蛇从它旁边爬过时立刻发动突袭,一口咬住蛇的脖子,咬住后就不松口。被咬住脖子的蛇脑袋无法转动,自然无法伤害到鳄鱼。等蛇脖子被咬断后,鳄鱼再叼...http://m.boqii.com/article/484230.html
9.宠物猫的分类及主要品种1、宠物猫的分类及主要品种,宠物猫的分类,虽然人类驯养猫的时间很长,但对猫品种的改良工作做得较少,猫的繁育及进化在很大程度上未受控制,猫的品种远没有其他畜禽类的品种多。目前分布在世界各地的猫的与其祖先相比,在体重及体长方面几乎没有什么变化。据报道,现今世界上猫的品种大约百余种,但常见的品种只有30-...https://m.renrendoc.com/paper/112022657.html
10.一种叫做人类的宠物我听了妻子的话,第二天一大早,她还在睡觉时,我就带着老虎与豹子去宠物医院了。 它们两个家伙相处得不怎么样,整天打架,然后抓破我心爱的窗帘。 我用了两个航空箱装它们,两个中肢各提着一只3米的航空箱,泥泞的路面上留下我沉重的脚印。 我是在“转圈圈宠物医院”见到新品种宠物人类的。 https://www.douban.com/note/583956977/
11.生物学知识点总结3.人类应用遗传变异原理培育新品种例子: 人工选育(生物变异)、杂交育种(基因重组)、诱变育种(基因突变)。 4.生物变异的意义:生物进化和发展的基础,培育动植物的优良品种。 5.被誉为“世界杂交水稻之父”的是我国科学家袁隆平,用普通水稻与野生稻杂交。 https://www.ruiwen.com/zongjie/1249580.html
12.珍贵用材树种资源的培育与我国的木材安全战略世界上所有有机体的活动都是要吸收氧气,放出二氧化碳气。只有以树木为主的绿色植物能够在阳光的作用下,吸收二氧化碳,放出氧气,这一功能保证了整个世界的碳平衡,保证了人类的生存和发展。 1.2.1.2木材是世界上唯一可以实现永续利用的材料 木材的生产是可持续的,只要地球还在,太阳还在,木材就会源源不断地生产出来。https://liyunkun.blog.caixin.com/archives/160178
13.宠物国际爱护动物基金会认为,猫和狗经过漫长的进化演变,已经脱离了自然界的生物链,不再存在于生态平衡之中,是适合人类家庭的动物,广泛存在于人们的生活、工作之中。在国外,新的趋势是称呼猫和狗为伴侣动物,体现它们在人类社会中的作用。虽然一般宠物在主人那里会受到很好的对待,但由于对宠物的需求,导致宠物市场的出现,为...https://baike.sogou.com/v52128.htm
14.民间美术的种类有哪些藏族、蒙族、维吾尔族等的毛、麻编织工艺有着悠久的历史,它以品种繁多、形式独特、色彩艳丽、民族风格浓厚、地域特色鲜明而闻名遐迩。它是琳琅满目的藏族民间工艺美术中的一朵奇葩。 六、中国传统玩具:从古代流传下来的手工制作玩具,俗称「耍货」。它们与民俗关系密切,具有一定的传承历史。传统玩具的生产采取了一家一户...https://www.360wenmi.com/f/filejut7lxl2.html
15.设特兰矮马是闻名世界的著名矮马品种,许多欧洲贵族都会饲养设特兰...黑龙江江里盛产冷水鱼,品种极多。() A. 正确 B. 错误 查看完整题目与答案 下列不属于放松功起点的部位选项是? A. 头部两侧 B. 面部 C. 头部后面 D. 头顶 查看完整题目与答案 履行费用的负担不明确的,由 A. 履行义务一方负担 B. 接受权利一方负担 C. 双方协商确定 D. 法院指定...https://www.shuashuati.com/ti/2c152f4552774f56abdb3bafe8a3e8d7.html?fm=bd23d1f06a73d30dc269af49cf88696048