java 多态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 多态的主要内容,如果未能解决你的问题,请参考以下文章

每个人单核苷酸多态性(SNP)形成的原因是啥?

多态性和动态铸造

Java多态——代码复用性

Java 多态

java多态/重载方法——一个疑难代码引发的讨论

Java 多态