面向对象的第三个特征----多态I

/*
 多态:
 某一种事物的多种存在形态。

 class 动物
 {}

 class 猫 extends 动物
 {}

 class 狗 extends 动物
 {}

 一个猫对象,存在了多种形态:

 动物 x = new 猫();//一个对象,两种形态。

 父类创建的,指向了子类的对象。
 猫这类事物,既具备了猫的形态,又具备了动物的形态,
 这就是对象的多态性。

 简单说,就是一个对象对应着不同类型。

 多态在代码中的体现:
    父类或者接口的引用指向了子类的对象。

 多态的好处:
    提高了代码的拓展性,前期定义的代码可以使用后期的内容。

 多态的弊端:
    前期定义的内容不能调用后期子类的特有内容。

 多态的前提:
    1,必须有关系,继承,实现。
    2,要有覆盖。

 */
abstract class Animal
{
    abstract void eat();
}

class Dog extends Animal
{
    public void eat() {
        System.out.println("啃骨头");
    }
}

class Cat extends Animal
{
    public void eat() {
        System.out.println("吃鱼");
    }
    public void CatchMouse() {
        System.out.println("抓老鼠");
    }
}



public class DuoTaiDemo {

    public static void main(String[] args) {
//      Cat c = new Cat();
//      Dog d = new Dog();
//      c.eat();
//      d.eat();
//      method(new Cat());
//      method(new Dog());

        Animal a = new Cat();//自动类型提升,猫对象提升为动物类型。
        a.eat();//但是会造成猫对象的特有功能无法被访问。
                //其作用就是限制对特有功能的访问。
                //专业上讲:向上转型。

        //如果还想使用猫的特有功能。
        //可以将对象进行向下转型。
        Cat c = (Cat)a;//向下转型的目的就是为了调用特有方法。 
        c.CatchMouse();
    }
    public static void method(Animal a) {
        a.eat();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章