一、多态
多态:事物的多种形态(编译时形态和运行时形态不是一样的); 单态:事物的单一形态(编译时形态和运行时形态是一样的); 其中,对象从无到有整个过程有"编译时形态"和"运行时形态"。 生活中的多态,如: 叫Sam的那只猫:桌上的这只(小动物),这只(哺星人)..... 程序中多态构造成前提条件: 1.必须有继承或者实现关系; 2.必须含有方法的重写(没有方法重写代码不会编译报错,但是这样的多态没有在何意义); 3.如果继承关系:父类的引用指向子类对象(父new子) 如果实现关系:父接口的引用指向实现类对象(父接口new实现类) 特殊的第三种方式:子类构造器中的super() 多态的格式: 1.继承关系:父类类名 对象名 = new 子类类名(); 2.实现关系:父接口名 对象名 = new 实现类类名();
二、多态情况下成员的特点
多态情况下成员的特点: 1.构造器; 2.实例变量; 3.实例方法; 多态成员的特点1:构造器 和原来new子类对象执行情况一样: 1.构造器的名字和类名必须相同; 2.构造器没有返回值类型而且连void关键字都不能有; 3.当一个类没有任何构造器时,JVM自动给其提供一个默认无参的构造器,以便进行初始化; 一旦这个类含有任何的构造器时,JVM不在为其提供; 4.构造器支持重载;
多态成员的特点2:实例变量 和以前打印变量的规则一样:打印变量的时候,和=右侧没有在何关系,和=左边变量的数据类型有关系;
多态成员特点3:实例方法 结论:当使用多态形式创建对象时,通过对象调用方法先看父类(父接口)中是否含有这个方法,如果有,执行子类重写后的方法;如果没有,编译报错。
三、多态的好处与弊端
多态的好处:直接将方法参数写成父类类型或者父接口的类型,当调用方法时,直接传递给其子类类型或者实现类类型即可。 多态的弊端:不可以调用子类特有的功能方法。 四、引用数据类型的类型转换 引用数据类型的类型转换: 1.自动类型转换(向上转型):将子类类型(实现类类型)转换成父类类型(父接口类型),其实就是多态。 2.强制类型转换(向下转型):将父类类型(父接口类型)转换成子类类型(实现类类型)。 强制类型转换的格式: 子类类型或者实现类类型 对象名 =(子类类型或者实现类类型)父类类型或父接口类型的对象; 注:CLassCastException:类型转换异常 五、instanceof关键字 instanceof关键字的格式:对象名 instanceof 类名 instanceof关键字的含义:判断该对象在内存中是否为指定的类型:如果是,返回true;如果不是,返回false。