向上转型

2018-08-08  本文已影响0人  bfx1000

向上转型特点:


例子如下:

package testUpcast;

public class Animal {
    String furColor="black";
    public void run(){
        System.out.println("Run as an animal");
    }
}
package testUpcast;

public class Cat extends Animal {
    String furColor="white";
    String size ="36xp";
    @Override
    public void run(){
        System.out.println("Run as a cat");
    }

    public void eat(){
        System.out.println("Eating likes a cat");
    }
}
package testUpcast;

public class Main{
    public static void main(String[]args){
        Animal c=new Cat();

        //Animal's furColor is black,不是white说明变量是继承自父类
        System.out.println("Animal's furColor is "+c.furColor);

        //System.out.println("Its furColor is "+c.size);//编译错误

        c.run();//Run as a cat,说明方法是继承子类重写的方法

        //a.eat();//编译错误    
    }
}

结果:

Animal's furColor is black
Run as a cat

结论:

(Animal)c 可以调用furColor 而且结果为black,说明了:子类可以调用继承自父类的变量,但值为父类变量值。
(Animal)c 不能调用size,说明了:子类无法调用子类新增父类没有的变量。


(Animal)c 可以调用run()而且结果为run as a cat,说明了:子类可以调用继承自父类的方法,但执行的是子类重写的方法。
(Animal)c 不能调用eat(),说明了:子类无法调用子类新增父类没有的方法。

上一篇 下一篇

猜你喜欢

热点阅读