如何给女朋友解释什么是面向对象编程? (3)

有类继承或接口实现、子类重写父类的方法、父类引用指向子类的对象。比如:

犬科动物{
    吠();
}

狗 继承 犬科动物{
    吠(){旺旺旺}
}

狼 继承 犬科动物{
    吠(){嗷嗷嗷}
}

狗和狼都是犬科动物,拉来一直犬科动物,如果它你叫的话,你可能没办法直接分辨出他到底是狼还是狗。只要他真正的叫出来的时候,你才知道。这就是运行时多态。转化成Java代码如下:

public class Canidae{
    public void bark();
}

public class Dog extends Canidae{
    public void bark(){
        System.out.print("旺旺旺....");
    }
}

public class Wolf extends Canidae{
    public void bark(){
        System.out.print("嗷嗷嗷....");
    }
}

public class Main(){
    Canidae canidae = new Dog();
    canidae.bark();
    Canidae canidae1 = new Wolf();
    canidae1.bark();
}

这样,就实现了多态,同样是Canidae的实例,canidae.bark调用的就是Dog类的方法,而canidae1.bark();调用的却是Wolf的方法。

有人说,你自己定义的对象,定义的时候不就知道canidae到底是什么类的对象了么,这个其实并不决定的,很多时候我们可能不知道,原因是,对象可能并不是我们自己new出来的,比如Spring的IOC。

奥,那我终于知道什么是面向对象编程了。

如何给女朋友解释什么是面向对象编程?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfyjz.html