zoukankan      html  css  js  c++  java
  • day 16 初试面试对象

    1.初识面向对象
         面向过程:
                一切以事物的发展流程为中心
         面向对象:
                一切以对象为中心.一切皆为对象.具体的某一个事务就是对象
    打比方:
          大象进冰箱
                步骤:第一步:开门, 第二步:装大象,第三:关门
                 面向对象:  大象,进冰箱 ,  此时主语是大象,我操纵的是大象,此时的大象就是对象
    2.类,对象
    类: 就是图纸.  创建对象的第一步.先画图纸.先写类.
    对象:  通过类创建对象, 列如:对象就是车,通过图纸造出来的东西
    类与对象的关系:
      类是对xxx事务的归类.
              写:
                  __init__(self,参数)   参数一般作为属性设置给对象.对象就是self,对徐行的封装.
                 def 方法(self,参数):  方法. 第一个参数一般是固定的self.当前类的对象.
                         pass
                 对象是xx类型的一个具体
                         创建对象: 类名()
      创建类:
    class 类名:
                 def __init__(self):   ##初始化方法.又被称为构造方法
                       self.属性  = 值
                       self.属性  = 值
                       self.属性  = 值
                 def  fangfa(self):
                          方法体(函数体, return)
    创建对象:
              变量 = 类型()     ###实例化   <->创建对象
              变量.属性    #访问对象的属性信息
              变量.方法()   ##访问类中的方法
    1. 创建⼀个武松. 武松可以打老虎, 杀嫂⼦, 替天⾏道
    类就是对属性和方法的封装
    class Person:
        # 属性
        def __init__(self, waihao, name, address):
            self.waihao = waihao
            self.name = name
            self.addre
    ss = address
     
        # 动作
        def dalaohu(self):
            print('%s%s%s打老虎' % (self.waihao, self.name, self.address))
     
        def shasaozi(self):
            print("这个人, 喜欢啥嫂子")
     
        def titianxingdao(self):
            print("替天行道")
     
    ws = Person("行者", "武松", "景阳县")
    ws.dalaohu()
    ws.shasaozi()
    ws.titianxingdao()
    ⽤⾯向对象的思维来完成⽤户登录.
    # 用户登录的问题. 逻辑是活的
    #
    # 我的版本: 把所有的逻辑都写在类中
    class User:
     
        def __init__(self, username, password):
            self.username = username
            self.password = password
     
     
        def login(self):
            uname = input("请输入你的用户名")
            upwd = input("请输入你的密码")
     
            if uname == self.username and upwd == self.password:
                print("登录成功")
            else:
                print("登录失败")
     
    u = User("alex", "123")
    u.login()
    3.面向对象和面向过程的对比:
       如果细一些比较小的程序用面向过程
       程序很复杂,很庞大建议用面向对象
    # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 超人
    # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 蝙蝠侠
    # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 蜘蛛侠
     
    # 面向过程: 代码非常的冗余. 尤其是参数
    def fight_superman(name, jineng):
        print("%s使用%s攻击超人" % (name, jineng))
     
    def fight_batman(name, jineng):
        print("%s使用%s攻击蝙蝠侠" % (name, jineng))
     
    def fight_spiderman(name, jineng):
        print("%s使用%s攻击蜘蛛侠" % (name, jineng))
     
     
    fight_superman('小猪佩奇', "嘴巴嘟嘟")
    fight_batman('小猪佩奇', "嘴巴嘟嘟")
    fight_spiderman('小猪佩奇', "嘴巴嘟嘟")
     
    #面向对象
    class Pig:
        def __init__(self, name, jineng):
            self.name = name
            self.jineng = jineng
     
        def fight_superman(self):
            print("%s使用%s攻击超人" % (self.name, self.jineng))
     
        def fight_batman(self):
            print("%s使用%s攻击蝙蝠侠" % (self.name, self.jineng))
     
        def fight_spiderman(self):
            print("%s使用%s攻击蜘蛛侠" % (self.name, self.jineng))
     
    pg = Pig("小猪佩奇", "嘴巴嘟嘟")
    # 不需要向原来一样传递一样的参数了
    # 面向对象的程序: 结果相对清晰. 缺点: 代码量比原来大, 上手太难
    pg.fight_batman()
    pg.fight_spiderman()
    pg.fight_superman()
    4.面向对象的三大特征:  封装, 继承,多态
       封装:   1.对属性的封装(__init__),    2.对方法和功能的封装
       继承:  子类自动拥有父类中除了私有内容外的其他所有内容
                       class Bar(fool):    Bar对fool进行了扩展
                                 pass
                  当出现x是一种y的时候.    推荐使用继承关系
                 python支持多继承.   查找顺序: 先找理他近的
    # 当出现xxx是一种yyy类型的东西. 可以使用继承关系
    # 猫是一种动物
    class Animal:
        def dong(self):
            print("动物会动, 顾雍")
     
    class Cat(Animal): # 子类其实是对父类的一种扩展
        def catchMouse(self):
            print("猫很皮, 抓老鼠")
     
    c = Cat()
    c.dong()
    c.catchMouse()
       
    # python支持多继承
    class Foo1:
        def getMoney(self):
            print('给你个大嘴巴子')
     
        def play(self):
            print("玩儿")
     
    class Foo2:
        def getMoney(self):
            print('给多点儿')
     
    class Bar(Foo1, Foo2): # 离当前类最近的是亲爹, 后面的是干爹.
        pass
     
    b = Bar()  # 就近原则, MRO的C3算法
    多态(python原生直接就是多态)
                 python更多的之臣的是鸭子模型,只要会嘎嘎叫就是好鸭子
  • 相关阅读:
    Spring Boot2 系列教程(二十)Spring Boot 整合JdbcTemplate 多数据源
    Spring Boot 如何给微信公众号返回消息
    Spring Boot2 系列教程(十九)Spring Boot 整合 JdbcTemplate
    Spring Boot2 系列教程(十八)Spring Boot 中自定义 SpringMVC 配置
    Spring Boot 开发微信公众号后台
    Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2
    Spring Boot2 系列教程(十六)定时任务的两种实现方式
    Spring Boot2 系列教程(十五)定义系统启动任务的两种方式
    Spring Boot2 系列教程(十四)CORS 解决跨域问题
    JavaScript二维数组
  • 原文地址:https://www.cnblogs.com/yanghongtao/p/10140059.html
Copyright © 2011-2022 走看看