1,封装定义:
将对象的数据与操作数据的方法相结合,通过方法将对象的数据与实现细节保护起来,就称之为封装
例如:
class Person(object):
__age=0
def setter_age(self,age):
if age>0 and age<150:
self.__age=age
else:
print '输入的数字没有在0-150之间'
def getter_age(self):
return self.__age
p = Person()
p.setter_age(100)
print p.getter_age()
Person类中定义了私有属性__age,类外设置和访问这个属性,只能通过调用setter_age和getter_age方法,而这两个方法对__age属性的做了一些处理,使得类外设置时只能设置在0-100之间,这就是实现了对__age属性的封装。
2,继承
通过继承子类可复用父类的方法和属性,子类对象可直接调用父类的方法和属性
例如:
class Animal():
name='dongwu'
def eat(self):
print 'Animal eat'
class Cat(Animal):
pass
cat=Cat()
cat.eat()
print cat.name
结果:
Animal eat
dongwu
3,方法的重写
当子类的方法与父类方法名相同时,子类的子类的方法会隐藏父类的方法,子类的方法重写了父类的方法。子类对象调用这个方法是调用的是子类的方法。
例如:
class Animal():
name='dongwu'
def eat(self):
print 'Animal eat'
class Dog(Animal):
name = 'gou'
def eat(self):
print 'Dog eat'
dog=Dog()
dog.eat()
print dog.name
4,方法的重载
在一个类中,定义了多个方法,方法名相同,参数类型或者个数不同,传入不同的参数执行不同的方法
python由于存在可变形参和命名形参,在形式上方法的重载是不存在的
class Animal():
name='dongwu'
def eat(self,name='breakfast'):
print 'Animal eat %s' %name
animal=Animal()
animal.eat()
animal.eat(name='')
结果:
Animal eat breakfast
Animal eat
5,多态
多态就是同一个方法传入不同的对象,有多种表现形态
方法的重载就面向对象多态的一种表现形式
例如:
class A(object):
def show(self):
print 'show A'
class B(object):
def show(self):
print 'show B'
a=A()
b=B()
def fuc(object):
object.show()
fuc(a)
fuc(b)
结果:
show A
show B