2020-06-20多态

作者: 智障猿 | 来源:发表于2020-06-21 09:55 被阅读0次

    多态

    • 多态概述
      同一个对象,在不同时刻表现出不同的形态
    • 多态的前提和体现
      ①有继承/实现关系
      ②有方法重写
      ③有父类/接口引用指向子/实现类对象(Animal animal = new Cat();)
    • 多态中成员的访问特点
      ①成员变量:编译看左边,执行看左边
      ②成员方法:编译看左边,执行看右边
      因为成员方法有重写的机制,而成员变量没有
    • 多态的好处和弊端
      好处:提高了程序的拓展性(定义方法 的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类参与操作)
      弊端:不能使用子类的独有的方法
    • 多态的形式
      具体类多态,抽象类多态,接口多态

    使用多态的例子

    • 父类Animal
    public class Animal {
        public void eat(){
            System.out.println("吃食物");
        }
    }
    
    • 子类Cat、Dog、Pig
    public class Cat extends Animal{
        @Override
        public void eat() {
            System.out.println("猫吃鱼!");
        }
        public void play(){
            System.out.println("玩游戏");
        }
    }
    
    public class Dog extends Animal{
        @Override
        public void eat() {
            System.out.println("狗吃骨头!");
        }
    }
    
    • 操作类AnimalOperator
    public class AnimalOperator {
        public void operator(Animal animal){
            //传入cat对象时相当于Animal animal = new Cat();
            //传入dog对象时相当于Animal animal = new Dog();
            animal.eat();//编译看左边,执行看右边
            //animal.play()
        }
    }
    
    • 测试类AnimalDemo
    public class Demo {
        public static void main(String[] args) {
            AnimalOperator animalOperator = new AnimalOperator();
            Cat cat = new Cat();
            animalOperator.operator(cat);
            Dog dog = new Dog();
            animalOperator.operator(dog);
        }
    }
    
    • 执行结果
    猫吃鱼!
    狗吃骨头!
    

    多态的转型

    • 向上转型
      从子到父
      父类引用指向子类对象
      不能使用子类中独有的方法
    • 向下转型
      从父到子
      父类引用转为子类对象
      可以使用子类中独有的方法(强制转换)

    相关文章

      网友评论

        本文标题:2020-06-20多态

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