标签:一个 继承 stat 同名 向下转型 变量 code 静态绑定 instance
多态:一种类型声明的的变量,可以引用多种实际类型对象
多态的实现存在三个前提(不满足则不构成类的多态)
new Son();
Father father;
简单的说,子类重写了父类的实例方法,且子类对象赋值给了父类变量,这就是类的多态、多种形态
类的多态中,分为两个重要的点(务必注意,多态理解的核心)
多态的向上转型:当子类实例变量赋值给父类引用变量
Father father = new Son();
多态的向上转型:(构成多态)
多态的向下转型:将向上转型的父类引用变量再强转会子类引用变量
Son son = (Son) father;
多态的向下转型,实质就是转换为原来的类型,向下转型之后不构成
类的多态
多态的向下转型:(不构成多态)
instanceof
判断instanceof
关键字用于比较两个类是否存在继承关系
静态绑定:在程序编译时确定的方法(子类无法重写的父类静态方法)
编译时类型 变量 = new 运行时类型();
简单的理解,根据子类是否存在,父类的同名静态方法
动态绑定:在程序运行时确定的属性、方法,以右侧运行时类型为准
静态绑定针对的是 static 类属性,而动态则是实例属性、实例方法
当多态向上转型的父类引用变量,调用父类、子类中同名的属性、方法时,实际调用的是子类重写的父类方法(实例属性、实例方法)
简单的理解,一个类重写了 toString()
,再通过该类对象调用,则不再是 Object
子类重写了父类的实例方法,且在右侧实例对象是子类时,则调用子类的实现
标签:一个 继承 stat 同名 向下转型 变量 code 静态绑定 instance
原文地址:https://www.cnblogs.com/wyfyjc/p/14881927.html