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多态

    多态 多态概述同一个对象,在不同时刻表现出不同的形态 多态的前提和体现①有继承/实现关系②有方法重写③有父类/接口...

  • 魏城《肖一》

    肖一 作者:魏城 写于2020-06-20 伦敦 ...................................

  • 2020-06-20 天殿纪事

    2020-06-20,外交部谈中印边境冲突来龙去脉 印方越线蓄意挑衅

  • 1.9 多态基本概念

    本小节知识点: 【了解】什么是多态? 【掌握】多态的条件 【了解】多态的优点 1.什么是多态? 什么是多态:多态就...

  • C++ 的多态(Polymorphism), virtual f

    多态 c++支持两种多态,编译时多态和运行时多态但其实编译时多态根本不是真正的多态,编译时多态就是函数的重载,ov...

  • 详解Java多态

    详解Java多态 多态定义 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态...

  • 多态

    1.多态 1.多态 1.1 要点 多态是方法的多态,不是属性的多态 多态的存在有三个必要条件:继承;方法重写;父类...

  • java多态面试题

    java多态性 多态分两种: (1) 编译时多态(设计时多态):方法重载。 (2) 运行时多态:JAVA运...

  • Java_basic_10: 多态polymorphism

    多态polymorphism 多态是指对象的多种形态 主要可以分为引用多态和方法多态 继承是多态的实现基础 引用多...

  • 六、多态与虚函数

    多态的基本概念 多态 多态分为编译时多态和运行时多态。 编译时多态主要是指函数的重载(包括运算符的重载)。对重载函...

网友评论

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

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