对象向上转型,父类对象就可以调用子类重写父类的方法,这样当父类对象需要添加新的功能时,只需要添加一个子类,在子类中对父类的功能进行扩展,而不需要更改父类代码
向上转型,格式如下
父类类型 父类对象=子类实例
示例代码如下
java">class Animal{public void shout(){System.out.println("喵喵....");}
}class Dog extends Animal{public void shout() {System.out.println("汪汪·····");}public void eat(){System.out.println("吃骨头····");}
}public class Shangxiangzhuanxiang {public static void main(String[] args) {//向上转型Dog dog=new Dog();Animal an = dog;an.shout();}
在上面代码中
java">class Animal{public void shout(){System.out.println("喵喵....");}
}
父类Animal定义了一个方法,shout方法输出的内容是“喵喵”
java">
class Dog extends Animal{public void shout() {System.out.println("汪汪·····");}public void eat(){System.out.println("吃骨头····");}
}
这段代码里,子类继承了父类,重写了shout方法,并且新写了一个eat方法
java">public class Shangxiangzhuanxiang {public static void main(String[] args) {//向上转型Dog dog=new Dog();Animal an = dog;an.shout();}
执行代码里,先定义了Dog类的对象实例,通过Animal an = dog的方法实现了向上转型,把shout方法重写了。
最后执行shout方法,输出的是
“汪汪”