java面向对象之多态
Java  /  管理员 发布于 8年前   174
多态的简单理解:
student类继承了Person类,则student类的对象既是student又是person类
多态性具有两种展现的形式:
1.方法的多态性:
(1)方法的重载:同一个方法可以根据传入的参数的类型或者个数的不同实现不同的功能
(2)方法的覆写:同一个方法可能根据实现子类的不同有不同的实现
2.对象的多态性:
父类与子类实例之间的转换处理
(1)对象向上转型:父类 父类实例 =new 子类实例();自动完成转换
(2)对象向下转型:子类 子类实例 =new (子类)父类实例();强制完成转换
相关视频教程分享:java免费视频教程
多态的最终体现:
1.为父类引用变量可以指向子类对象
2.多态的前提是必须有子父类关系或者类实现接口关系,否则无法实现多态
3.在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法
多态的成员变量:
1.编译的时候,参考父类中哟没有这个变量,如果有就编译成功,如果没有就编译失败
2.运行的时候,运行的是父类中的变量值
成员变量编译运行皆看父类
多态的成员方法:
1.编译的时候,参考父类中有没有这个方法,如果有就编译成功,如果没有就编译失败
2.运行的时候。运行的是子类的重写方法
成员方法编译看父类,运行看子类
对象的两种转型方式的理解:
1.对象向上转型:
向上转型之后,子类对象只能调用父类拥有的方法,不能调用子类独自拥有的方法,通过向上转型实现多态性的使用
2.对象向下转型:
如果对象向上转型之后想要使用子类独有方法而父类没有的方法,需要使用对象的向下转型
代码演示:
public class Person {public void Eat(){//在person类中定义一个吃的抽象方法}}public class Student extends Person{public void Eat(){System.out.println("学生吃学校食堂");//重写父类中的抽象方法}public void Learning(){System.out.println("学生在学习");//定义一个student类特有的方法}}public class Test {public static void main(String[] args) {// TODO 自动生成的方法存根Person p=new Student();//通过向上转型定义一个p对象p.Eat();//这是子父类共有的方法p.Learning();}}
在这个代码中我们通过向上转型调用了一个子类特有的方法,但是会提示如下图:
父类中没有定义Learning方法。但是我们又必须调用子类的特有的方法,此时就需要通过向下转型来实现
补充代码如下:
Student stu=(Student)p;//将p对象向下转型实现方法调用stu.Learning();
想学习更多相关教程请访问:java快速入门
以上就是java面向对象之多态的详细内容,更多请关注其它相关文章!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号