美文网首页
Java中的多态

Java中的多态

作者: 夜希辰 | 来源:发表于2021-05-06 22:00 被阅读0次

    学习笔记:多态
    参考文章:Java多态的介绍

    多态,同一个对象,在不同时刻表现出来的不同形态
    多态实现前提:有继承/实现关系、有方法重写、有父类引用指向子类对象

    1、多态中成员访问特点
    • 成员变量:编译看等号左边执行左边(不能使用子类特有的成员变量)
    • 成员方法:对象能编译看等号左边,执行看右边。(不能使用子类特有的方法。只能使用子类和父类都有的方法)
      为什么成员方法和成员变量执行不一样?因为成员方法有重写,成员变量没有重写
    //父类
    public class Animal {
        public int age = 40;
        public void eat(){
            System.out.println("动物吃东西");
        }
    }
    
    //子类
    public class Cat extends Animal {
        public int age = 20;
        public int weight = 10;
    
        @Override
        public void eat() {
            System.out.println("猫吃鱼");
        }
    
        public void playGame(){
            System.out.println("猫捉迷藏");
        }
    }
    
    //主接口类
    public class AnimalDemo {
        public static void main(String[] args) {
            //有父类引用指向子类对象
            Animal a = new Cat();//向上转型
    
            System.out.println(a.age);//通过多态访问成员变量,访问的是父类的成员变量
    //        System.out.println(a.weight);//报错,父类没有weight变量
    
            a.eat();
    //        a.playGame();/报错,父类没有playGame方法
             Cat c = (Cat)a;//向下转型
            c.playGame();
    
            ((Cat) a).playGame();//(Cat) a向下转型
        }
    }
    
    2、多态中的转型
    • 向上转型:从子到父,父类引用指向子类对象
    • 向下转型:从父到底子,父类引用转向子类对象

    相关文章

      网友评论

          本文标题:Java中的多态

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