日志文章

2019-12-15 aflfte2011

多态的写法

package com.aflfte.oo2;
/**
 * 多态的测试
 * @author root
 *引用父类可直接调用子类的方法实现多重状态运行
 */
public class TestPolym {
    public static void main(String[] args) {
        Animal a=new Animal();
        animalCry(a);
        Animal d=new Dog();//这样写与Dog d=new Dog();相同 子类可以自动转型为父类
        animalCry(d);
        Animal c=new Cat();
        Dog d2=(Dog) d;//向下转型(父类转子类)时必須为强制转型方法实现
        d2.seeDoor();//在调用子类私有方法时必须进行强制转型后才可使用
        Dog d3=(Dog) c;//不同强制将子类属性转为另一个子类属性,否则为出现转型错误
        d3.seeDoor();
    }
    
    static void animalCry(Animal a) {//多态写法,通过父类引用,调用子类的方法
        a.shout();
    }
}
class Animal{
    public void shout() {
        System.out.println("叫了一声!");
    }
}
class Dog extends Animal{
    public void shout() {
        System.out.println("㕵㕵㕵㕵!!");
    }
    public void seeDoor() {//Dog的私有方法
        System.out.println("看门。。");
    }
}
class Cat extends Animal{
    public void shout() {
        System.out.println("喵喵喵喵!!");
    }
}

« final修饰 | 封装的使用»