1.定义:某一种事物的多种形态 例:猫类继承动物类。则猫具有两种形态,即动物与猫。 (就是猫既是猫又是动物) 定义变量普通赋值:猫a = new 猫(); 定义变量多态赋值:动物 b = new 猫(); 多态的程序体现:父类或者接口的引用指向其子类对象或者实现类对象。 2.前提:需要存在继承或者实现关系。 要有方法覆盖操作,否则没有意义。(方法重写) 父类或者接口的引用指向自己的子类对象。 3.优点:开发当中要符合开闭原则:对修改关闭,对扩展开放。 多态的存在提高了程序的扩展性(由多态保证)和后期可维护性(由继承保证)。 4.弊端:不能使用子类的特有功能。 5.特点 成员函数:(编译看左边,运行看右边) 编译时:要查看引用变量所属的类中是否有所调用的成员函数。即父类的引用类型必须有该方法 运行时: 子类重写的方法运行 成员方法:(编译看左边,运行看右边) 编译时:父类的引用类型必须有该属性 运行时:访问的为父类的属性 6.向上向下转型: 向上转型:引用变量为父类时,子类实例对象可以自动提升为父类类型。(多态本身的赋值就是向上转型) 向下转型:可以使用强制类型转换,将父类强转成子类,前期父类引用指向的对象为子类对象,即必须是多态的引用。 7.多态的表现形式 具体类多态(少见) 抽象类多态(常见) 接口多态(常见)
|