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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,591评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,138评论 1 32
  • 周记今天早上被轰隆隆的电视吵醒,醒来一看俺妈和俺妹都没在床上,又做了一个梦,先不给你们说了,总之之前我也梦见过明星...
    冰凉诗雨阅读 198评论 0 1
  • 一生一世 文/上官文清 这座城市很大 扼腕恰似绅士,你那么远 这座城市很小 拥抱好像名流,你这么近 一捧花在城市的...
    上官文清阅读 1,387评论 131 52
  • 心血来潮,最近想重拾画笔。虽然不是专业画画,但想找回那种感觉。 菜鸟级别,画得很粗糙,不过还是会...
    暴击奇葩阅读 2,464评论 0 1