多态

例:
动物 接口
public interface AnimalDuotai {
    public void bank();
}
猫类  是动物接口的实现类
public class Cat implements AnimalDuotai{
    public void bank(){
        System.out.println("喵喵。。。");
    }
    public void eat(){
        System.out.println("吃鱼");
    }
}
狗类   是动物接口的实现类
public class Dog implements AnimalDuotai{
    public void bank() {
        System.out.println("旺旺。。。");
    }
    public void eat(){
        System.out.println("吃骨头");
    }
}
动物测试类
public class AnimalTest {
    //动物叫声测试方法
    public static void barkTest(AnimalDuotai a){
        System.out.println("动物声音测试开始");
        a.bank();
    }
    public static void main(String[] args) {
        //接口是不能实例化与抽象类一样,
        //如果接口要实例化我们可以通过new一个接口的实现类对象
        //赋值给这个接口对象
        //一个子类对象的引用赋值给他的父类对象也可以,这也是多态
        AnimalDuotai c=new Cat();
        c.bank();
        AnimalDuotai d=new Dog();
        d.bank();
        AnimalDuotai a=d;//引用类型自动转换
//    Dog dd=(Dog)a;//AnimalDuotai(a)强制类型转换(a只能转换成Dog类型)
        if (a instanceof Dog) {//instanceof判断a是否是Dog类的实例
            Dog dd=(Dog)a;
        }else {
            System.out.println("a对象不是Dog类的实例不能转换");
        }
        AnimalTest.barkTest(c);
    }
}

一个子类对象的引用赋值给他的父类对象也可以,这也是多态

避免子类重写父类方法(定义final、定义private

posted @ 2014-12-12 23:49  屌丝一枚#  阅读(114)  评论(0)    收藏  举报