- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JAVA之旅(八)
JAVA之旅(八)
一.多态
我们今天又要学习一个新的概念了,就是多态,它是面向对象的第三个特征,何谓多态?
定义
某一类事物的多种存在方式
比如
动物中的猫狗,人类中的男人,女人
我们可以把多态理解为事物存在的多种体现形态
当我们new一个猫类的时候,和new 一个动物,其实是一样的,多种形态变现
所以我们可以分这几部分分析
多态的体现
多态的前提
3.多态的好处
4.多态的应用
我们定义一个需求,描述动物,正常的逻辑应该是这样描述的
//公共的 类 类名
public class HelloJJAVA {
// 公共的 静态 无返回值 main方法 数组
public static void main(String[] str) {
/**
* 动物: 猫,狗
*/
Cat c = new Cat();
c.eat();
dog d = new dog();
d.eat();
}
}
/**
* 动物
*
* @author LGL
*
*/
abstract class Animal {
// 吃什么不确定,抽象
abstract void eat();
}
/**
* 猫
*
* @author LGL
*
*/
class Cat extends Animal {
@Override
void eat() {
System.out.println(猫吃鱼);
}
}
/**
* 狗类
*
* @author LGL
*
*/
class dog extends Animal {
@Override
void eat() {
System.out.println(狗吃骨头);
}
}
这个体系我们展现出来一个为题,我们为了使用猫吃东西和狗吃东西,得new两个对象,要是多来几只小动物,我不还得new死,所以我们要想一个解决办法,他们有一个共性,就是都是动物,我们可以这样转换
Animal a = new Cat();
a.eat();
因为也是动物类型,我们输出
这就是多态在程序中的表现
父类的引用指向了自己的子类对象,这就是多态的代码体现形式,人 = new 男人,换句话说,父类的引用也可以接收子类的对象,所以我们可以这样定义一个方法
//公共的 类 类名
public class HelloJJAVA {
// 公共的 静态 无返回值 main方法 数组
public static void main(String[] str) {
/**
* 动物: 猫,狗
*/
AnimalEat(new Cat());
AnimalEat(new dog());
}
public static void AnimalEat(Animal a) {
a.eat();
}
}
这样就方便了,这样也就体现了多态的好处:
多态的出现大大的提升了程序的扩展性
但是有前提的
必须类与类之间有关系,要么继承,要么实现
通常,还有一个前提就是存在覆盖
不过,有利有弊,还是会存在弊端的
提高了扩展性,但是只能使用父类的引用访问父类的成员,这是局限性,但是我们侧重扩展性
我们再返回前面说多态的转型,我们看这段代码
//类型提升
Animal a = new Cat();
a.eat();
我们也叫作向上转型,
如果想要调属性,该如何操作(向下转型)?
强制将父类的引用转为子类类型
Animal a = new Cat();
a.eat();
Cat c = (Cat)a;
c.sleep();
也就是说,转型是强制将父类的引用,转为子类类型,向下转型。千万不要将父类对象转成子类对象,我们能转换的是父类引用指向子类对象的子类,多态自始至终都是子类对象在做着变化
那么你会了强转之后,你就说,我可以这样做
//公共的 类 类名
public class HelloJJAVA {
// 公共的 静态 无返回值 main方法 数组
public static void main(String[] str) {
/**
* 动物: 猫,狗
*/
AnimalEat(new Cat(
您可能关注的文档
- 实现啊a,b,c的打印,线程安全问题.doc
- 达内第二届发现杯软件大赛(JAVA B卷)试题.docx
- 万年历Java窗体算法.doc
- 备课·八年级下 U5T1.doc
- 时间片轮转RR进程调度算法(华侨大学).doc
- java中集合、输入输出流、线程重难点总结.doc
- 2012江西财经大学java笔试A.doc
- 031509271何撼课程设计.doc
- unit8. 教学案.doc
- 管理技术之8----问题分析技术 a.doc
- JAVA实验报告(汪国志).doc
- 王长喜老师 专八听力周计划 第四周(预测试题)星期三.doc
- 课时提升作业(四十二) 选修8 Modules 5、6.doc
- 仁爱英语 七年级U7T1sectionA.ppt
- 专八听力预测试题三.doc
- 高二英语周练Book 8 Unit 1 ( 十 ).doc
- 人教版八(下)Unit 9 Section A (1a-2d)教学设计表单.doc
- struts2.1.8+mybatis3.0+spring3.0(全注解)小例子.docx
- 八年级英语湘教版上 Unit2Topic3SectionA说课稿.doc
- Unit3,T1 Section A 课件.ppt
最近下载
- 庭院设计课件 第五章 功能布局与平面设计.pptx VIP
- 2021年Fall AMC 10B真题含答案.pdf VIP
- 2025年辽宁省地矿集团面向校园招聘80人考试备考试题【含答案解析】.pdf VIP
- 九一八事变(课件)小学生主题班会通用版(共22张PPT).pptx VIP
- 屋顶分布式光伏发电施工组织设计.docx VIP
- 小学三年级班主任工作计划安排.doc VIP
- 广州某1200吨超低温金枪鱼冷库制冷系统设计.docx VIP
- 2025年美丽中国全国国家版图知识竞赛题库(附答案).docx VIP
- 中医辩证施护课件.ppt VIP
- Mysql数据库及应用 广东开放大学考试题库答案.doc VIP
文档评论(0)