面向对象知识总结

面向过程: 强调的是步骤、过程、每一步都是自己亲自去实现的。 这种解决问题的思路我们就叫做面向过程。 面向对象:当遇到某个需求的时候不用自己去实现,应该找一个

面向过程: 强调的是步骤、过程、每一步都是自己亲自去实现的。

这种解决问题的思路我们就叫做面向过程。

面向对象:当遇到某个需求的时候不用自己去实现,应该找一个专门做这个事的人来做。

这种解决问题的思路我们叫做面向对象。

三大特征: 继承、封装、多态

1.对象: 万物皆对象

  a 看的见摸得着实实在在存在的  比如:埃菲尔铁塔

  b 看不见,摸不着的, 但是存在   比如: 会议

 

2. 对象: 属性和方法

  属性:静态不会改变的

  方法:会动的, 动作

例:张三同学 属性:姓名,性别,年龄,身份证号,体重,联系方式,籍贯,名族,身高,住址, 班级,学号,爱好
方法:学习,娱乐,吃饭,睡觉,厕所,喝水
泰迪:属性:名字,性别,体重,毛色,住址,品种,年龄,身高
方法:娱乐,叫,吃,喝,吐舌头,厕所
笔记本:属性:品牌,型号,配置,出厂日期,重量,寿命,尺寸,价格,颜色
方法:代码,娱乐,办公,学习

3.类: 对象中公共的属性和方法,类是抽象的概念,仅仅是模板,如:人,模子,月饼

  对象是一个你能看到的, 摸得着的具体实体 (根据模子造出,各种属饼)

4.类图: class Person(object):#大驼峰  #继承  

        #属性
       name=None
       sex=none
       age=0

       #方法      

       def show(self):    
         print('名字%s 性别%s 年龄%d'%(self.name,self.sex,self.age))

       #创建实例对象
        zsf=person()
        zsf.name='张三'
       #添加属性
        zsf.hobby='唱歌'
        zsf.age=100
        zsf.sex=‘男’
        zsf.show()
        print(zsf.hobby)

5. 构造函数:完成初始化(给属性赋值)可以使用默认值def__init__(self,age=18)年龄的默认值为18  

def __init__(self,n1,n2):
self.s1=n1
self.s2=n2
把之前的多行代码完成初始化,用1行代码代替

6.self:代表当前类

class Person(object):
def show(self):#self代表person
pass

7.封装:例如(电视机,电脑,冰箱)防止不合法数据输出;保护数据
1.私有属性(只有自己所用属性前加俩下划线,__+属性,私有后无法访问)
2.共有属性(所有人共同使用的)类和子类都可以用,任何人都能用,当前类可以用
赋值用set,获取值用get
3.protect受保护的 前加一个下划线(_+属性) 

class Person(object):
     __name=None
     __sex=None
     __age=0
     def setNmae(self,name):
        if ......
           self.__name=name
        else:
           self.__name='aaa'
     def getNmae(self,name):
         return self.__name
 ss=Person()
 ss.setName('dd')
 print('名字:%s'%(ss.getName(),..))

8.1.继承:把相同的代码放到父类中,继承来源于生活,比如:孩子继承父母长相,孩子继承遗产
继承涉及到父类(超类super,基类base)和子类(派生类,扩展类)
2.啥时候用:子类与父类是is a 关系(企鹅是一只鸟:企鹅is a 鸟)
3.继承怎么用:创建父类
class +父类名(object):
  公共属性
  公共方法
  创建子类
class +子类名(父类名):
  自己特有的属性
  自己特有的方法

4.在哪里用:a:is a关系
b:多个类中出现多个相同的属性和方法,把相同的属性和方法放到父类中,子类中留下 自己特有的
5.子类调用父类的属性和方法:super().属性或super()方法

9.多态:同一个动作有不同的人在做

class Pet(object):                 #定义一个父类
    def zoo(self):                 #构造同一个方法
        print('小张家喂养了狗和猫')
class Dog(Pet):
    def zoo(self):
        print('狗在啃骨头')
class Cat(Pet):
    def zoo(self):
        print('猫在吃鱼')
class Poeple(object):
    def feed(self,Pet):
        print('小张在喂养宠物')
        Pet.zoo()                #最后返回这个动作
xz=Poeple()
cat=Cat()
xz.feed(cat)
dog=Dog()
xz.feed(dog)

一.1.单继承:继承具有传递性(单继承)
多继承:可以继承父子类(class+类名(类1,类2))
2.@property私有公用,使得用法跟调用属性一样;@属性+setter赋值方法

3.对象可以有自己的属性:li=Student()
  li.hobby='羽毛球'
  print(li.hobby)
4.构造函数可以使用默认值:
  class People(object):
    def __init__(self,name,age=10)
      self.name=name
      self.age=age
  zs=People('张三') #默认年龄为10
5.类中属性:公共的:name
私有的:__age 俩个下划线
受保护的:_money # 一个下划线
6.继承具有传递性:class A(object):
          pass
         class B(A):
          pass
           class C(B):
          pass
        c1=C() #对象c1可以调用父类中A的公共属性和方法
super().__init__(父类的属性)
注意:继承分为单继承和双继承,继承只能继承公共属性和方法
7.property:set,get方法的使用像属性一样简单