zoukankan      html  css  js  c++  java
  • Java 的多态

    1    多态的概念

     多态(?)

     可以理解为多种状态/多种形态

    同一事物,由于条件不同,产生的结果不同

     

    程序中的多态

    同一引用类型,使用不同的实例执行结果不同的。

    :同一个类型,一般指父类。

    不同:不同的子类实例

    不同:针对同一方法执行的结果不同

    package cn.sxt05;
    
    public class Test01 {
        public static void main(String[] args) {
            
            // 多态
            // 同一引用类型
            Pet pet = null;
            // 父类引用 引用 子类对象
            pet = new Dog("二狗",100,0,"土狗");
            // 呈现多态
            pet.eat();
            
            pet = new Penguin("大脚", 90, 50, Penguin.SEX_FEMALE);
            // 呈现多态
            pet.eat();
        }
    }

    实现多态的步骤

    [1] 编写父类

    [2] 编写子类,子类一定要重写/实现父类的方法

    [3] 运行时,父类类型 引用 子类对象 (Pet pet = new Dog())

    1。2   多态的实现形式

    // 多态
    // 同一引用类型
    Pet pet = null;
    // 父类引用 引用 子类对象
    pet = new Dog("二狗",100,0,"土狗");
    // 呈现多态
    pet.eat();

    pet = new Dog() 父类类型引用子类对象,当调用eat方法时,执行的是子类对象重写/实现eat方法。

       父类作为方法形参实现多态

    public void feed(Pet pet) {
            System.out.println(this.getName() + "正在喂" + pet.getName());
            pet.eat();
        }

    父类作为方法的返回值实现多态

    public Pet adoptPet(int type) {
            Pet pet = null;
            if(1 == type) {
                pet = new Dog();
            }else if(2 == type) {
                pet = new Penguin();
            }else if(3 == type){
                pet = new Cat();
            }
            return pet;
        }

    1.3 类型转换

    多态中存在两种类型转换,一种是自动类型转换,一种是强制类型转换

    引用数据类型转换过程中,

    自动类型转换也称向上类型转换。子类可以自动转换成父类。

    Pet pet = null;
    pet = new Dog();

    强制类型转换也称下类型转换父类可以强制转换成子类。

    一般而言,需要判断父类对象的真实类型instanceof关键字

    如果要调用子类特有的方法,一定要强制类型转换,通过instanceof鉴别具体类型

    public void play(Pet pet) {
            if(pet instanceof Dog) {
                Dog dog = (Dog) pet;
                dog.catchFlyDisc();
            }else if(pet instanceof Penguin) {
                Penguin penguin = (Penguin) pet;
                penguin.swimming();
            }
        }
  • 相关阅读:
    C# 中 枚举Enum 一些转换的方法整理
    qt creator源码全方面分析(3-8)
    qt creator源码全方面分析(3-7)
    qt creator源码全方面分析(3-6)
    qt creator源码全方面分析(3-5)
    qt creator源码全方面分析(3-4)
    qt creator源码全方面分析(3-3)
    qt creator源码全方面分析(3-2)
    精校版网络小说下载地址
    qt creator源码全方面分析(3)
  • 原文地址:https://www.cnblogs.com/FSY15767366954/p/10759857.html
Copyright © 2011-2022 走看看