向上转型

向上转型特点:

  • 对变量的影响:
    转型后的对象,可以使用继承自父类的变量,而且变量值是父类变量的值。
    不可以使用子类新增而父类没有的变量。
  • 对方法的影响:
    转型后的对象,可以使用继承自父类的方法,而且执行的是子类重写的方法。
    不可以使用子类新增而父类没有方法。

例子如下:

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(),说明了:子类无法调用子类新增父类没有的方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。