Python面向对象的特点(二)继承
1.什么是继承?
继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等
如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”。继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码。在令子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能。另外,为子类别追加新的属性和方法也是常见的做法。 一般静态的面向对象编程语言,继承属于静态的,意即在子类别的行为在编译期就已经决定,无法在执行期扩充。
2.继承具有传递性
继承具有传递性
当父类方法的实现不能满足子类的需求的时候 可以对父类方法进行重写
1.覆盖父类方法
2.对父类的方法进行扩展
例如:
3.面向对象中类的结构
类的结构 术语--实例 1.使用面向对象开发,第一步是设计类 2.使用 类名() 创建对象,创建对象的动作有两步 1.在内存中为对象分配空间 2.调用初始化方法__init___ 为对象初始化 3.对象创建后,内存中就有了一个对象的实实在在的存在--实例 因此: 1.创建出来的对象叫做类的实例 2.创建对象的动作叫做实例化 3.对象的属性叫做实例属性 4.对象调用的方法叫做实例方法 在程序执行时: 1.对象各自拥有自己的实例属性 2.调用对象的方法,可以通过self 访问自己的属性 调用自己的方法 结论: 1.每一个对象都有自己独立的内存空间,保存各自不同的属性 2.多个对象的方法,在内存中之有一份,在调用方法时, 需要把对象的引用传递到方法内部
4.覆盖方法
示例:
这里将A写在B前面这样A就会将B覆盖,因此只会输出A的结果。
5.super调用父类方法
如图:
图中子类是没有hungry的属性的,在使用super之后就调用了父类的方法。