java之多态
多态性:是面向对象中最重要的概念,在java中有两种体现:
成员变量调用: Java的引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明该变量使使用的类型决定,运行时类型由实际赋给该变量的对象决定。若编译时类型和运行时不一致,就会出现多态。? 对象的多态性,在Java中,子类对象可以替代父类的对象引用:
子类可以看作是特殊的父类,所以父类类型的引用可以指向子类的对象:向上转型。 一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法: Student m = new Student(); m.school = ?"pku';//合法,Student类有school成员变量 Person e = new Student(); e.school = "pku";//不合法,Perosn类没有school成员变量 属性是在编译时确定的,编译时e为Person属性,没有school成员变量,因此编译错误。 虚拟方法调用: 正常的方法调用:
虚拟方法调用,多态情况下:
编译时e为Person类型,而方法的调用是在运行时确定的,所以调用的是Student类的getInfo()方法--动态绑定。 总结: 前提:
成员方法:
成员变量:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |