这期内容当中小编将会给大家带来有关java中面向对象的多态介绍,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联公司专注于城子河网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供城子河营销型网站建设,城子河网站制作、城子河网页设计、城子河网站官网定制、小程序定制开发服务,打造城子河网络公司原创品牌,更为您提供城子河网站排名全网营销落地服务。多态的简单理解:
student类继承了Person类,则student类的对象既是student又是person类
多态性具有两种展现的形式:
1.方法的多态性:
(1)方法的重载:同一个方法可以根据传入的参数的类型或者个数的不同实现不同的功能
(2)方法的覆写:同一个方法可能根据实现子类的不同有不同的实现
2.对象的多态性:
父类与子类实例之间的转换处理
(1)对象向上转型:父类 父类实例 =new 子类实例();自动完成转换
(2)对象向下转型:子类 子类实例 =new (子类)父类实例();强制完成转换
多态的最终体现:
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中面向对象的多态介绍,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注创新互联成都网站设计公司行业资讯,感谢各位的阅读。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。