美文网首页我与咖啡娘的爱恨情仇
12.多态中的向上转型和向下转型

12.多态中的向上转型和向下转型

作者: 今天庹 | 来源:发表于2018-10-07 18:04 被阅读0次

    多态中向上转型与向下转型

    多态的转型分为向上转型与向下转型两种:

    • A:向上转型:当有子类对象赋值给一个父类引用时,便是向上转型,多态本身就是向上转型的过程。
      使用格式:
      父类类型 变量名 = new 子类类型();
      如:Person p = new Student();

    • B:向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用转为子类引用,这个过程是向下转型。如果是直接创建父类对象,是无法向下转型的
      使用格式:
      子类类型 变量名 = (子类类型) 父类类型的变量;
      如:Student stu = (Student) p; //变量p 实际上指向Student对象

    package com.itheima_01;
    /*
     *  多态中的向上转型和向下转型:
     * 
     *  引用类型之间的转换
     *      向上转型(自动)
     *          由小到大(子类型转换成父类型)
     *      向下转型(强制)
     *          由大到小(父类型转换成子类型)
     *  基本数据类型的转换
     *      自动类型转换
     *          由小到大
     *          byte short char --- int --- long --- float --- double
     *      强制类型转换(有可能出现损失精度)
     *          由大到小
     *          
     */
    public class PoymorphicDemo3 {
        public static void main(String[] args) {
            Animal2 a = new Dog();//向上转型
    //      a.eat();
            
            Dog d = (Dog)a;//向下转型
            d.swim();
        }
    }
    
    class Animal2 {
        public void eat() {
            System.out.println("吃东西");
        }
    }
    
    class Dog extends Animal2 {
        public void eat() {
            System.out.println("啃骨头");
        }
        
        public void swim() {
            System.out.println("狗刨");
        }
    }
    

    相关文章

      网友评论

        本文标题:12.多态中的向上转型和向下转型

        本文链接:https://www.haomeiwen.com/subject/rjolaftx.html