public abstract class Animal { public abstract void run(); }
public class Dog extends Animal{ @Override public void run() { System.out.println("狗跑得快!"); } public void yaoren(){ System.out.println("狗咬人"); } }
public class tortoise extends Animal{ @Override public void run() { System.out.println("乌龟跑得慢!"); } }
public class Test { public static void main(String[] args) { Animal s1 = new tortoise(); go(s1); // Animal s1 = new Dog(); /*好处:方便解耦,实现代码的扩展与维护*/ Animal s2 = new Dog(); // s2.yaoren(); 多态下不能使用子类特有方法(行为)。 go(s2); } /*定义方法时,使用父类类型作为参数,该方法便可接受父类的一切子类对象 * 体现了多态的扩展性与便利*/ public static void go(Animal a){ System.out.println("开始"); a.run(); System.out.println("结束"); } }
多态:同类型对象,执行同一个方法时,会有不同的表现或特征
常见形式:父类名 对象名称 = new 子类名
接口名 对象名称 = new 实现类名
多态使用的前提:一定有继承或接口的实现,父类对子类的引用,方法的重写(抽象类)
多态的好处:1.在多态的形式下,右边对象可以随便解耦,这提高了代码的灵活性和扩展性。
2.定义方法时,将父类类型作为参数,该方法便可接受父类的一切子类对象,体现了多态的扩展性和便利。
补充:对于变量用父类,方法用子类的(多态侧重于行为)
多态也存在一些问题:多态下不能使用子类的独有功能。