day16 初识面向对象

今天主要学习内容:

1.初始面向对象

2 .类 ,对象

3,面向对象和面向过程的对比

4.面向对象的三大特征

1,初始面向对象

面向过程 :

   一切以实物的发展流程为中心

面向对象:

   一切以对象为中心,一切皆为对象  ,具体的某一个事物就是对象

打比方 大象进冰箱 :

 步骤 第一步 ,开门  第二部 , 装大象 ,第三步,关门

 面向对象: 大象自己进冰箱 

 2 .类与对象

class car: #类名 ,创建对象
  pass

#造车
c=car() #创建一辆车
c.color='红色' #给车添加属性
c.pai='鲁A88888' 
c.pailaing='1.4T'
print(c.color)

 下面我们要介绍一种新方法

class car(): #创建类
    def__init__(self,color,pai,pailiang):# __init__(self)是默认开始创建的属性,
在创建对象的时候,默认执行这个函数 self.color=color #给车一个颜色 self.pai=pai self.pailiang=pailiang def pao(self): #定义一个动作,在类中写函数叫方法(与函数的定义一样) print('我的车会跑') che=car('红色','鲁A88888','200T') #传参 che.pao() #执行你的车的动作

3. 面向对象与面向过程的对比  

 1) 脚本  (此时代码最简单,但是不需要构思整个程序的概况)

print("开门")
print("装大象")
print("关门")

 2) 函数式编程(比脚本麻烦,对功能有了概括,稍微有了点逻辑)

 def kai():
     print('开门')
 def zhuang():
     print("装大象")
 def guan():
     print('关门')

 3) 面向对象编程 ,整个系统进行分析,分析出需要那些对象,然后给对象进行归类

#先写类,然后使用类创建对象,最后用对象去执行相关的操作
 class Elephant:
     def __init__(self):
         print("创建了一个大象")
     def kai(self):
         print("大象开门")
     def zuan(self):
         print("大象进冰箱")
     def guan(self):
         print("大象把门带上")
 dx = Elephant()
 dx.kai()
 dx.zuan()
 dx.guan() 

函数侧重的是功能
面向对象侧重的是 归类

面对对象的程序:结果相对清晰 .缺点: 代码量比原来大,上手难

面对对象比面向过程啥味好一些,可维护性比原来好 

python同时支持面向对象和面向过程:
面向过程: 应用程序相对比较小. 不需要大规模的设计
面向对象: 程序非常大. 项目管理 维护成本很高. 此时更适合用面向对象(结构)

4. 面向对象的三大特征 : 封装 ,继承 ,多态

1) 封装 

        对属性的封装

        对功能的封装

    模块

    包

 class Student:
     def __init__(self, num, name, clazz):
         self.num = num
         self.name = name
         self.clazz = clazz
 stu = Student("10010", "曹宝哥", "三年二班")  # 把多个信息(值) 保存在一个对象里面
 stu2 = Student("10086", "王低", "三年一班")

 def kill_stu(s):
     print("杀%s" % (s.name))
 kill_stu(stu2)

 class Game:

     def login(self):
         print("登录")

     def recharge(self):
         print("充钱")

     def uninstall(self):
         print("卸载")
     def zhaoduixiang(self):
         print("找对象")
 class Game1:
     def recharge(self):
         print("充钱")
     def uninstall(self):
         print("卸载")
 class Game2:
     def recharge(self):
         print("充钱")
     def uninstall(self):
         print("卸载")
 g = Game2()
 g.uninstall() 

2) 继承  当出现xxx是一种yyy类型的东西. 可以使用继承关系

 子类自动拥有父类中除了私有内容外的其他所有内容
 王思聪(熊猫TV) -> 王健林(年龄)
 继承目的: 对父类进行扩展

父类的对象不能执行子类中的功能

 class Foo:
     def getMoney(self):
         print("拿钱")
 class Bar(Foo):
     pass

 b = Bar()
 b.getMoney() # 此时调用的是父类中的方法

3) 多态  

多态性: 同一个对象. 多种形态.
python支持的是鸭子类型. 会嘎嘎叫的东西就是鸭子
为了程序能够正常执行. 本来需要传递进来一只鸭子. 但是我只需要传递一个会嘎嘎叫的东西就可以了

#  模拟动物园
# class Animal:
#     def chi(self):
#         print("会吃")
#
# class GoldenMonkey(Animal):
#     def chi(self):
#         print("用手拿着吃, 五花八门")
#
# class Tiger(Animal):
#     def chi(self):
#         print("老虎吃肉")
#
# class Elephant(Animal):
#     def chi(self):
#         print("大象吃香蕉")
#
# class QiE(Animal):
#     def chi(self):
#         print("企鹅吃人民币")
#
# # 以下代码是饲养员
# # 优点:超强的可扩展性. 面向对象的核心就是多态
# def wei_animal(ani): # 传进来的东西要会吃就行
#     ani.chi()
#
# # 动物园
# t = Tiger()
# m = GoldenMonkey()
# e = Elephant()
#
# wei_animal(t)
# wei_animal(m)
# wei_animal(e)

  

 

转载于:https://www.cnblogs.com/zty1304368100/p/10133358.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值