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