java面向对象三大特性---多态
多态
根据调用方法不同而产生不同的结果称为“多态”
多态分为编译时多态和运行时多态。
编译时多态
package org.oop.demo06; class Test { void print(){ System.out.println("Hello"); } void print(String x){ System.out.println("hello" + x); } public static void main(String []args){ Test ts = new Test(); ts.print(); // hello ts.print("jack"); // hellojack } }
编译时,代码会根据你调用的参数列表动态决定调用哪一个函数
运行时多态
形成条件: 有继承关系、子类重写父类、父类指向子类对象
package org.oop.demo06; //运行时多态 //多态的形成 class Animal { void run(){ System.out.println("animal is running..."); } void eat(){ System.out.println("animal is eat..."); } } // 子类继承父类 class Dog extends Animal { // 子类重写父类 void run(){ System.out.println("Dog is running..."); } } class Cat extends Animal { void run(){ System.out.println("cat is running..."); } void eat(){ System.out.println("cat is eatting..."); } } public class AnimalDemo{ public static void main(String[] args){ //父类引用指向子类 //父类不能调用子类新增的方法 Animal dog = new Dog(); Animal cat = new Cat(); dog.run(); // Dog is running... dog.eat(); // animal is eat... System.out.println("--------"); cat.run(); // cat is running... cat.eat(); // cat is eatting... } }
一个类只能由一个父类,不能多继承。一个父类可以多个子类,子类能重写父类的方法。调用同个方法产生不同的结果就是多态
优点:多态提高了代码的复用性,提供更高的可托充性,以及可维护性