zoukankan      html  css  js  c++  java
  • (转)java的多态(向上转型、向下转型)

    在我的理解:java的向上和向下转型可以看成是类型的转换。

    ————————————————
    版权声明:本文为CSDN博主「ldsh304」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/ldsh304/java/article/details/77622245

    public class Person {
        public void eat(){
            System.out.println("Person eatting...");
        }
        public void sleep() {
            System.out.println("Person sleep...");
        }
    }
    
    public class Superman extends Person{
        public void eat() {
            System.out.println("Superman eatting...");
        }
    
        public void fly() {
            System.out.println("Superman fly...");
        }
    }
    

    测试向上转型的主方法:

    public class Main {
        public static void main(String[] args) {
            Person person = new Superman();
            person.sleep(); //调用的是父类person的方法
            person.eat(); // 调用的是Superman里面的eat方法,Superman重写了Person父类的方法
            //person.fly(); //报错了,丢失了Superman类的fly方法
        }
    }

    运行的结果:
    Person sleep…
    Superman eatting…

    ***分析:***当在执行Person person = new Superman()时,我们来看看它的内存存储:

     

     从此图我们可以看出 向上转型会丢失子类的新增方法,同时会保留子类重新的方法。


    测试向下转型的主方法:

    public class Main {
        public static void main(String[] args) {
            Person person = new Superman();
            Superman s = (Superman)person;   //向下转型
            s.sleep();
            s.fly();
            s.eat();
        }
    }

    运行的结果:
    Person sleep…
    Superman fly…
    Superman eatting…

    ***分析:***当在执行Superman s = (Superman)person;时,我们来看看他们的内存存储:

    在这里我们看出 向下转型可以得到子类的所有方法(包含父类的方法)。

  • 相关阅读:
    在Centos 7下编译openwrt+njit-client
    开博随笔
    Chapter 6. Statements
    Chapter 4. Arrays and Pointers
    Chapter 3. Library Types
    Chapter 2.  Variables and Basic Types
    关于stm32不常用的中断,如何添加, 比如timer10 timer11等
    keil 报错 expected an identifier
    案例分析 串口的地不要接到电源上 会烧掉
    案例分析 CAN OPEN 调试记录 进度
  • 原文地址:https://www.cnblogs.com/NuoChong/p/12890812.html
Copyright © 2011-2022 走看看