Python中的封装,继承和多态

面向对象的三大特性:封装,继承和多态

封装:在类的内部定义属性和方法,通过对象或类名来访问属性和方法,隐藏功能的实现细节,也可以设置访问权限。

广义的封装:实例化一个对象,给对象空间封装一些属性;狭义的封装:私有制;私有成员:私有静态字段,私有方法,私有对象属性

继承:子类需要重用父类的属性和方法,子类中也可以定义自己的属性和方法。

多态:python是弱类型语言,python中处处是多态;python中没有多态,但是有鸭子类型  ==》一些类含有相同的方法,则这些类就互称为鸭子

下面这几个类都有index方法,index具有相同的作用,则这几个类就互称为鸭子

class Str:
      def index(self):
            pass

class List:
      def index(self):
            pass

class Tuple:
      def index(self):
            pass

  对于私有成员,类的外部不能访问,子类(派生类)也不可以访问,只能在本类的内部访问

class Animal:
      head = "True"  #静态变量(静态字段)
      body = "True" #静态变量(静态字段)
      __color = "red" #私有静态变量(私有静态字段)
      __skin = "black" #私有静态变量(私有静态字段)
      def __init__(self,name,age): #特殊方法
            self.name = name #对象属性(普通字段)
            self.age =age #对象属性(普通字段)
      def eat(self):#普通方法
            print("所有动物都需要吃……")
      def drink(self):#普通方法
            print("所有动物都需要喝……")
      def __func(self):#私有方法
            print("Animal fun")

      def fun(self):
            self.__func() #私有方法在类的内部可以访问
class Dog(Animal):
     pass

a1 = Animal("小猫",2)
##print(a1.head,a1.body)
##a1.eat()
##print(a1.__color) #报错 对象不可以访问类的私有静态变量
##a1.__func() #报错 对象不可以访问类中私有方法

##print(Animal.head)
##print(Animal.__color) #报错 类名不可以访问类中的私有静态变量
##Animal.__func() #报错 类名不可以直接访问类中的私有方法

d = Dog("小狗","2")
#print(d.head)
#print(d.__color) #报错 子类不可以访问父类的私有静态变量
#d.__func() #报错 子类不可以访问父类的私有方法

d.fun()

  

猜你喜欢

转载自www.cnblogs.com/tanxu05/p/9904970.html