首页 > 代码库 > java 多态

java 多态

 

技术分享
package com.mydemo.controller;
/**
 * 多态
 * java 多态有三个条件:
 * 1、继承 2、重写 3、父类引用指向子类对象
 * -------------------------------------
 * java 父类引用不能访问子类成员变量
 * 需要强转
 * 在强转前还要 instanceof, 不instanceof 也可以,但为了程序的健壮性,建议强转
 * -------------------------------------
 * 但调用子类重写的方法因为有多态,就不需要强转了
 */
public class TestAnimal {
    public static void main(String[] args) {
        Animal dog = new Dog("大黄", "黄");
        dog.enjoy();
        /* 下面一行实际上并没有强转,dog还是一只Animal,
         * 因为dog 引用在声明时是Animal
         */
        dog = (Dog)dog;
//        System.out.println(dog.furColor);
        Dog bigYellow = (Dog)dog;
        System.out.println(bigYellow.furColor);
    }
}

class Animal {
    public String name;
    public Animal(String name) {
        this.name = name;
    }
    public void enjoy() {
        System.out.println("叫……");
    }
}

class Dog extends Animal {
    public String furColor;
    public Dog(String name, String furColor) {
        super(name);
        this.furColor = furColor;
    }
    public void enjoy() {
        System.out.println("狗叫……");
    }
}
View Code

 

java 多态