面向对象的特征 封装 继承 多态
封装 提高程序的安全性
继承 提高代码的复用性
多态 提高程序的可扩展性和可维护性
封装:提高程序的安全性,
1.若不想外接程序进行访问里面的属性,这时可以在 属性名前面加上'__'
2.如果想访问其属性但 属性属于私有 这是我们可以通过 _类名__方法名 进行访问
class car:
def __init__(self,brand):
self.__brand=brand
def __start__(self):
print('开始开车')
c=car('宝马')
# c.__brand 报错
c.__start__()
继承:防止代码冗余,提高代码的复用性
1.在python中类支持多继承
2.在继承的子类中 如果需要添加属性 这时就需要重写__init__函数(构造函数),但注意在重写__init__函数是要调用父类的构造函数 super().__init__()
3.方法的重写:如果对子类进行方法重写,在创建子实体类时,方法以子类的方法为准
#python支持多继承,在定义子类时,必须在其构造函数中调用父类的构造函数
class Person(object):
def __init__(self,name,age):
self.name=name
self.age=age
def info(self):
print('姓名:{0},年龄:{1}'.format(self.name,self.age))
#定义子类
class Student(Person):
def __init__(self,name,age,score):
super().__init__(name,age)
self.score=score
class Teacher(Person):
def __init__(self,name,age,jiaolin):
super().__init__(name,age)
self.jiaolin=jiaolin
def info(self):#重写方法
super().info()
print('教龄:{0}'.format(self.jiaolin))
# print('姓名:{0},年龄:{1},教龄:{2}'.format(self.name,self.age,self.jiaolin))
#测试
stu=Student('Jack','20','1001')
stu.info()
tea=Teacher('Tom','36','6')
tea.info()
多态: 提高程序的可扩展性和可维护性
1.静态语言(java)#继承 方法重写 父类引用指向子类对象
(Parent类有方法a,ChildA childB都有方法a, 一个逻辑在调Parent类型的a方法时,传入ChildA实例和ChildB实例都是可以运行的,这称为Java的多态机制。 即父类引用指向子类对象在调用同一方法时有着不同的表现形式)
2.动态语言(例如python)在python中 多态的概念在于 只关心行为而不用关心是谁的子类,
###########多态
class A:
def eat(self):
print("吃饭")
class B(A):
def eat(self):
print("狗吃肉")
class C(A):
def eat(self):
print("猫吃鱼")
class D:
def eat(self):
print("人吃五谷杂粮")
def fun(obj):
obj.eat()
fun(C())
fun(D())
fun(A())