zoukankan      html  css  js  c++  java
  • python第三十一天-----类的封装、继承,多态.....

    封装

    封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。

    封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

     

     1 class dog(object):
     2     nationality='ch'#公有属性
     3     def __init__(self,name,food,leven):#构造函数,方法,初始化方法
     4         self.name=name #实例指针,指向 属性  对象成员
     5         self.food=food
     6         self.leven=leven
     7         self.__haot='hhh'#前面双下划线定义为私有属性
     8 
     9     def get_hoat(self):#定义方法为私有属性提供接口
    10         return self.__haot
    11     def say(self):#类中的方法  都是公有方法
    12         print('hello,my name is ',self.name)
    13     def eat(self,foods):
    14         print("my food is %s,but my eat %s"%(self.food,foods))
    15     def leve(self):
    16         print("my leve is ",self.leven)
    17 
    18     def __del__(self):
    19         print("删除中...")
    20 
    21 
    22 d=dog("liili",'gl',"5")
    23 d.say()
    24 d.eat('kkk')
    25 d.leve()
    26 print(d.get_hoat())#通用接口访问私有属性
    27 
    28 print(d._dog__haot)#强制访问私有属性
    29 print(d.nationality)
    30 
    31 dog.nationality='chan'
    32 print(d.nationality)
    33 d.nationality='us'
    34 print(d.nationality)
    View Code
     1 class F1(object):
     2     def __init__(self,n):
     3         self.N = n
     4         print('F1')
     5 
     6 class F2(object):
     7     def __init__(self,arg1):
     8         self.a = arg1
     9         print('F2')
    10 
    11 class F3(object):
    12     def __init__(self,arg2):
    13         self.b = arg2
    14         print('F3')
    15 
    16 
    17 
    18 c1=F1('yjj')
    19 c2=F2(c1)#可以封装一个对象
    20 c3=F3(c2)#可以封装多层的对象
    21 print(c3.b.a.N)#通过  .  调用

    继承

    继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

    通过继承创建的新类称为“子类”或“派生类”。

    被继承的类称为“基类”、“父类”或“超类”。

     

     1 class studen(object):#定义类  学生 基类
     2     def __init__(self,name,age,clas):#名字,年龄,班级
     3         self.name=name
     4         self.age=age
     5         self.clas=clas
     6     def talk(self):
     7         print('%stalk one.....'%self.name)
     8     def walk(self):
     9         print('%s walk....'%self.name)
    10     def info_user(self):
    11         print('name is %s, age is %s,clas is  %s'%(self.name,self.age,self.clas))
    12 
    13 class clas_one(studen):#继承studen
    14     def __init__(self,name,age,clas,score):#重构构造方法
    15         #studen.__init__(self,name,age,clas)#先继承, 再重构
    16         super(clas_one,self).__init__(name,age,clas)#新式类
    17         self.score=score#增加新对象成员
    18     def talk(self):#重写方法
    19         print('is new talk ,%s'%self.name)
    20     def score_info(self):#新增加 子类方法
    21         print(self.score,'')
    22 
    23 p=clas_one('学生一',36,'一年三班',178)
    24 p.talk()
    25 p.score_info()
    View Code
     1 class F1(object):
     2     def __init__(self):
     3         print('F1')
     4     def a1(self):
     5         print('F1a1')
     6     def a2(self):
     7         print('F1a2')
     8 
     9 class F2(F1):
    10     def __init__(self):
    11         print('F2')
    12     def a1(self):
    13         self.a2()
    14         print('F2a1')
    15     def a2(self):
    16         print('F2a2')
    17 
    18 class F3(F2):
    19     def __init__(self):
    20         print('F3')
    21     def a11(self):
    22         print('F3a1')
    23     def a2(self):
    24         print('F3a2')
    25 
    26 obj=F3()
    27 obj.a1()#调用时,self指向当前对象

    多态

     1 class Animal(object):
     2     def __init__(self,name):
     3         self.name=name
     4     def talk(self):
     5         raise NotImplementedError('提示出错')
     6 
     7 
     8 class c(Animal):#继承Animal
     9     def talk(self):
    10         print('%s 1111'%self.name)
    11 
    12 class d(Animal):#继承Animal
    13     def talk(self):
    14         print('%s 2222'%self.name)
    15 
    16 
    17 def talk_all(obj):#用函数来模拟多态
    18     obj.talk()
    19 
    20 c1=c('')
    21 d1=d("")
    22 
    23 talk_all(c1)
    24 talk_all(d1)
    View Code

    您的资助是我最大的动力!
    金额随意,欢迎来赏!

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

    如果,想给予我更多的鼓励,求打

    因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【莫柔落切】!

    联系或打赏博主【莫柔落切】!https://home.cnblogs.com/u/uge3/

  • 相关阅读:
    CF1066E Binary Numbers AND Sum
    CF1063B Labyrinth
    CF1063A Oh Those Palindromes
    CF1066C Books Queries
    CF1060D Social Circles
    CF1059C Sequence Transformation
    CF1059B Forgery
    CF1060C Maximum Subrectangle
    【LYOI2016】EasyRound1
    【bzoj2242】计算器
  • 原文地址:https://www.cnblogs.com/uge3/p/6933700.html
Copyright © 2011-2022 走看看