面向对象的三个特性之一。多态
多态:一类事物的多种表现形式。人:男人,女人,妖 动物:阿猫,阿狗
在java中
1.重载:在一个类中一个方法功能的多种表现形式
重写:父子类对于同一个方法表现出不同的形式
2.对象的多态性:若编译时和运行时类型不一致,就出现多态(Polymorphism)
java程序的编译运行分为两种状态:在多态的情况下
编译时,“看左边”,看的是父类的引用(父类中不具备子类特有的方法)
运行时,“看右边”,看的是子类的对象(实际运行的是子类重复父类的方法)
向上转型与向下转型
引用数据类型之间的转换:前提都先有继承
向上转型upcasting:子类转父类 系统自动完成
注意:一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法
向下转型downcasting:父类转子类 需要使用强制类型转换符()
注意:前提父类原先指向的就是本身对象才能向下转型成功,如果父类原先指向的是其他类型(父类的,兄弟类的)的对象,那么就会发生 java.lang.CastException类型转换异常。
7.8 7.8instance
引用类型对象能用的运算符:
=:赋值 引用变量=对象
==和!=:比较两个对象的地址
+:必须与String拼接
其他运算符都不能直接用于对象
唯一一个只用于引用类型的运算符:instanceof
x instanceofA:检验x是否为类A的对象,返回值为boolean型
要求X所属的类A必须是子类和父类的关系,否则编译错误
如果X属于类A的子类B,x instanceofA也为 true
7.8多态的原则
多态的前提:1.要有继承或者实现关系 2.要有方法的重写
成员方法:
编译时:要查看引用变量所属的类中是否有所调用的方法。
运行时:调用实际对象所属类中的重写方法。
成员变:
不具备多态性,只看引用变量所属的类。
属性也会继承到子类中,子类也可以定义和父类同名的属性。但是属性不具备多态性,编译与运行都只看左边
7.8
网友评论