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

来源:互联网 发布:共轭矩阵 编辑:程序博客网 时间:2024/06/05 09:06
/* 多态: 某一种事物的多种存在形态。 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();    }}
原创粉丝点击