7.8

面向对象的三个特性之一。多态

多态:一类事物的多种表现形式。人:男人,女人,妖    动物:阿猫,阿狗

在java中

1.重载:在一个类中一个方法功能的多种表现形式

重写:父子类对于同一个方法表现出不同的形式

2.对象的多态性:若编译时和运行时类型不一致,就出现多态(Polymorphism)

java程序的编译运行分为两种状态:在多态的情况下

编译时,“看左边”,看的是父类的引用(父类中不具备子类特有的方法)

运行时,“看右边”,看的是子类的对象(实际运行的是子类重复父类的方法)

向上转型与向下转型

引用数据类型之间的转换:前提都先有继承

向上转型upcasting:子类转父类    系统自动完成

注意:一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法

向下转型downcasting:父类转子类  需要使用强制类型转换符()

注意:前提父类原先指向的就是本身对象才能向下转型成功,如果父类原先指向的是其他类型(父类的,兄弟类的)的对象,那么就会发生 java.lang.CastException类型转换异常。

图片发自App
图片发自App

instance

引用类型对象能用的运算符:

=:赋值  引用变量=对象

==和!=:比较两个对象的地址

+:必须与String拼接

其他运算符都不能直接用于对象

唯一一个只用于引用类型的运算符:instanceof

x  instanceofA:检验x是否为类A的对象,返回值为boolean型

要求X所属的类A必须是子类和父类的关系,否则编译错误

如果X属于类A的子类B,x instanceofA也为 true

图片发自App

多态的原则

多态的前提:1.要有继承或者实现关系 2.要有方法的重写

成员方法:

编译时:要查看引用变量所属的类中是否有所调用的方法。

运行时:调用实际对象所属类中的重写方法。

成员变:

不具备多态性,只看引用变量所属的类。

属性也会继承到子类中,子类也可以定义和父类同名的属性。但是属性不具备多态性,编译与运行都只看左边

图片发自App

你可能感兴趣的:(7.8)