本文共 1129 字,大约阅读时间需要 3 分钟。
定义父类 Animal,代码如下:
public class Animal { public void sleep() { System.out.println("小动物在睡觉"); } public static void doSleep(Animal animal) { // 此时的参数是父类对象,但是实际调用时传递的是子类对象,就是向上转型。 animal.sleep(); } public static void main(String[] args) { Animal animal = new Animal(); animal.doSleep(new Cat()); animal.doSleep(new Dog()); }}
public class Cat extends Animal { @Override public void sleep() { System.out.println("猫正在睡觉"); }}
public class Dog extends Animal { @Override public void sleep() { System.out.println("狗正在睡觉"); }}
如果不用向上转型则必须写两个 doSleep 方法,一个传递 Cat 类对象,一个传递 Dog 类对象。这还是两个子类,如果有多个子类就要写很多相同的方法,造成重复。可以看出向上转型更好的体现了类的多态性,增强了程序的间接性以及提高了代码的可扩展性。当需要用到子类特有的方法时可以向下转型,这也就是为什么要向下转型。
总结如下:
Son son =(Son)father;
。其中 father 前面的(Son)
必须添加,进行强制转换。转载地址:http://yglq.baihongyu.com/