继承和多态

来源:互联网 发布:她妈妈的公主 知乎 编辑:程序博客网 时间:2024/04/29 00:50

类还有一个重要的特性就是继承,什么是继承?它又有什么作用呢?继承最主要的目的就是为了扩展原类的功能,加强或改进原类所没有定义的属性及方法。例如我们有狗这个类,可是狗的种类还是有很多,比如说博美狗,圣伯纳,柴犬等等,如果只用狗一种类来定义所有种类狗的属性及方法,那么用这个类所产生出来的对象一定会有一些对其他对象没有用的属性和方法,例如圣伯纳狗有雪地救人的方法,可是博美狗并不需要也不可能到雪地里去救人,所以在博美狗的对象中并不需要这个方法

所以我们可以在狗的类下面,再去定义一些子类,这些子类会继承狗类中虽有公共的可以继承的属性和方法,然后再加上一些自己这个类所特有的属性及方法,或是修改原本不使用于这个类的方法。我们习惯称被继承的类为父类,而称继承的类为子类

在使用多态概念的时候,有三点必须要主要到,第一某一特定实例就是该特定实例,它不会因为用不同的表示法来形容就会改变它原来的实例,比如有一只叫小黑的熊,你可以称它是只动物,但是实际上它还是一个熊类所产生出来的对象,而不是一个动物类的对象。第二就是当你把小黑当成动物来看的时候,那么你只能使用和访问动物类所提供的属性和方法。也就是说熊类有一个新的方法,例如睡16个小时,可是你把它当成动物来看时你根本就不知道它是熊,又怎么会知道它睡16个小时呢?所以你把它当动物来看的时,不能使用子类才有的方法。第三,就是如果父类又方法被子类覆盖了,那么当你以父类的身份来调用这个方法时就会执行子类的方法。还是以睡觉的方法来打个比方,比如给动物类设置的是睡8个小时,熊类继承并修改了这个方法,例如延长睡觉时间为16个小时。这个道理很简单,一个对象产生后,那么直到死去之前,它永远是当初产生它时的类的实例。所以熊就是会睡16个小时,不管你把它当什么来看,它就会执行它自己的修改过的方法

原创粉丝点击