面向对象之对象的三大特性

发布时间 2023-06-26 16:52:40作者: 凡人半睁眼

一、封装

封装是一种将数据和相关方法组合成一个单独的实体的机制。它将数据(属性)和操作数据的方法(方法)封装在一个对象中,并对外部代码隐藏了内部的实现细节。通过封装,对象可以提供一个公共接口,使得外部代码可以通过该接口访问和操作对象的数据,而不需要了解其内部的具体实现。

二、继承

继承是一种通过定义一个新类来继承现有类的属性和方法的机制。

它允许新类(子类)继承现有类(父类)的属性和方法,并且可以在新类中添加新的属性和方法,或者重写父类的方法来定制子类的行为。

继承促进了代码的重用和扩展(),并且提供了层次化和组织化的代码结构。

1、为什么要继承?
类解决什么问题:解决的是对象与对象之间的代码冗余问题
继承解决什么问题:解决的是类与类之间的代码冗余问题

2、子类的继承可以有多个父类

class Parent1(object):
    pass

class Parent2:
    pass

# 子类
class Sub1(Parent1):
    pass

# 多继承, 括号里面可以写多个类
class Sub2(Parent1, Parent2):
    pass

3、查看一个类继承了哪些父类,.__bases__方法

print(Sub1.__bases__) # (<class '__main__.Parent1'>,)
print(Sub2.__bases__) # (<class '__main__.Parent1'>, <class '__main__.Parent2'>)
print(Parent1.__bases__)  # (<class 'object'>,)

 

 

 

三、多态

多态是指同一种操作或函数可以作用于不同的对象类型,并产生不同的行为。多态允许使用统一的接口来处理不同类型的对象,而不需要关心对象的具体类型。通过多态,可以编写通用的代码,减少了重复的代码和条件语句的使用,提高了代码的可扩展性和可维护性。多态实现了面向对象编程中的一个重要原则:针对接口编程,而不是针对实现编程。