面向对象的三大特性

来源:互联网 发布:360vr全景通源码 编辑:程序博客网 时间:2024/05/22 13:19

封装
封装性:将内容封装到某个地方,以后再去调用被封装在某处的数据;
1. 将内容封装到某处;
2. 从某处调用被封装的内容;
对于面向对象的封装来说,就是使用构造方法将内容封装到对象里面,然后通过对象直接调用或者self调用被封装的数据。

#学生类class Student(object):    def __init__(self,name,age,gender,classes,number):        self.name=name        self.age=age        self.gender=gender        self.classes=classes        self.number=number    def study(self):        pass    def pay(self):        pass    def information(self):        pass

继承
继承,即子继父业,子类是派生类,父类是基类
继承分为单继承和多继承,即:

class(父类名称)                   #单继承class(父类名称1,父类名称2...)      #多继承

新式类和经典类的不同,在于对方法搜索顺序的不同。新式类采用广度优先继承,而经典类采用深度优先继承。以下是一个新式类和经典类分别作为基类的例子:

#class D(object):            # 新式类class D:                      # 经典类    def eat(self):        print "D eating"class C(D):    def eat(self):        print "C eating"class B(D):    def run(self):        print "runing"    def eat(self):        print "B eating"class A(B,C):    pass

继承的优点:

  • 建造系统中的类,避免重复操作
  • 新类经常是基于已经存在的类,这样就可以提升代码的复用程度

多态
多态是指:不同的对象可以调用相同的方法然后得到不同的结果。不过需要注意以下两点:

  • 如果子类调用的方法,子类没有,父类有,运行父类
  • 如果子类调用的方法,子类有,父类也有,只运行子类的
class Animal(object):  # Animal:类,盖房的图纸    def __init__(self, name, age):   #self实质是实例化后的对象本身,构造函数        self.__name = name  # self.name = "taoqi",name是属性,__name是私有属性        self.__age = age  # self.age = 6    def setName(self,name):        self.__name = name    def getName(self):        print self.__name    def run(self):        print "%s is running" % (self.__name)    def eat(self):        print "%s is eating......" %(self.__name)    def __del__(self):        print "is delete......."class Cat(Animal):  # Cat类继承Animal类,父类/基类(Animal),子类/派生类(Cat)    def __init__(self):        super(Cat, self).__init__()class Dog(Animal):    passtom = Animal("fentiao","west")del(tom)