面向对象之封装、继承、重写、重载、多态

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


 
 

 
 


猜你喜欢

转载自blog.csdn.net/qq_32551117/article/details/80135039