三大特征 封装 继承 多态
1、面向对象与面向过程
2、类
# class Students: # school = '中心小学' # def __init__(self,name, age, job): # self.name = name # self.age = age # self.job = job # def run(self): # # return 'running......' # print('running....') # stu1 = Students('张三', 18, 'IT') # stu2 = Students('王二', 16, 'student') # stu3 = Students('赵五', 19, 'teacher') # stu1.run()
特征:
一、封装
题目1:
class Person(object):def __init__(self, name, weight):self.name = nameself.weight = weightdef eat(self): #吃self.weight += 1def run(self): #跑self.weight -= 0.5def __str__(self):return '姓名:%s\n体重:%s公斤\n' % (self.name, self.weight)xiaoming = Person('小明', 90) # 创建小明 xiaoming.eat() #让小明调用吃的方法 xiaoming.run() #让小明调用跑的方法 print(xiaoming)
题目2:
class Items(object):#创建一个家具类def __init__(self, name, area): #初始化出不同的类对象self.name = nameself.area = areadef __str__(self):return '家具名称:%s\n面积:%s平米\n' % (self.name, self.area)class House(object):#创建房子类def __init__(self, house_type, total_area):#初始化房子类(因为新房子没有家具,剩余面积等于总面积,所以不用传参)self.house_type = house_typeself.total_area = total_areaself.free_area = total_areaself.items = []def add_item(self, item):#添加家具的技能self.items.append(item.name)#一触发添加家具的技能就添加家具到列表中if self.free_area > item.area:#假如剩余面积大于家具面积就添加成功self.free_area = self.free_area - item.area# print('户型:%s\n总面积:%s平米\n剩余面积:%s平米\n家具列表:%s\n' % (self.house_type, self.total_area, self.free_area, self.items))else:#否则添加不进去print('家具太大了,装不进去....')def __str__(self):#打印房子当前状态return '户型:%s\n总面积:%s平米\n剩余面积:%s平米\n家具列表:%s\n' % \(self.house_type, self.total_area,self.free_area, self.items) bed = Items('席梦思',4)#实例化出一个床对象 chest = Items('衣柜', 2)#实例化出一个衣柜对象 table = Items('餐桌', 1.5)#实例化出一个餐桌对象 # fire_car = Items('火车', 100) house = House('两室一厅', 90) #实例化出一个房子对象 house.add_item(bed) #执行添加家具动作 house.add_item(chest) house.add_item(table) house.add_item(fire_car) print(house)
题目3:
class Gun(object): #抢def __init__(self,name):self.name = nameself.zidan = 0def add_zidan(self,count): #填装子弹self.zidan += countdef shoot(self): #射击if self.zidan > 0:self.zidan -= 1print('fire.....%s' %self.zidan)else:print(' no zidan ')def __str__(self):return ' 有一把%s\n子弹为%s'%(self.name,self.zidan)class per(object): #人def __init__(self,name):self.name = nameself.gun = Nonedef fire(self): #开火if self.gun:self.gun.shoot()else:print('meiyou gun') M4A1 = Gun('M4A1') #创建枪 gd = per('狗蛋') #创建狗蛋 gd.gun = M4A1 #狗蛋--调用了--抢 (也就是给狗蛋安排枪) gd.gun.add_zidan(50) #狗蛋的--枪--添加子弹 gd.fire() #狗蛋开火 gd.fire()
二、继承
# class Anamal(object): # # def eat(self): # # print('吃') # # def drink(self): # # print('喝') # # def run(self): # # print('跑') # # def sleep(self): # # print('睡') # # # # class Dog(): # # def bark(self): # # print('汪汪叫') # # # # class XiaoTianQuan(Anamal,Dog): # # def fly(self): # # print('我会飞啦!!!!') # # # # dog = XiaoTianQuan() # # dog.bark() # # dog.run() # # dog.eat() # # dog.sleep() # # dog.drink() # # dog.fly()
2、方法的重写
class Anamal(object):def eat(self):print('吃')def drink(self):print('喝')def run(self):print('跑')def sleep(self):print('睡')class Dog(Anamal):def bark(self): print('汪汪叫')class XiaoTianQuan(Dog):def fly(self):print('我会飞啦!!!!')def bark(self): print('有仙气的叫.......')dog = XiaoTianQuan() dog.eat() dog.run() dog.sleep() dog.drink() dog.bark() #重写 dog.fly()
class Anamal(object):def eat(self):print('吃')def drink(self):print('喝')def run(self):print('跑')def sleep(self):print('睡') class Dog(Anamal):def bark(self): print('汪汪叫') class XiaoTianQuan(Dog):def fly(self):print('我会飞啦!!!!')def bark(self):print('牛逼的叫.......')super().bark() #调用基类的方法print('%*#*@^$*(@') dog = XiaoTianQuan() dog.eat() dog.run() dog.sleep() dog.drink() dog.bark() dog.fly()初始化__init__继承 class Person():def __init__(self, name):self.name = nameclass KOBE(Person):def __init__(self, age):super(KOBE, self).__init__('科比') #要将子类KOBE和self传递进去self.age = agekobe = KOBE(18) print(kobe.name) print(kobe.age)
三、多态
- 定义类的准则
- 设计类的技巧
- 子类针对自己特有的需求,编写特定的代码
# class Dog(object): # def __init__(self, name): # self.name = name # def game(self): # print('%s 开开心心去玩耍.....' % self.name)# class XiaoTianQuan(Dog): # def game(self): # print('%s 开开心心去玩耍.....' % self.name)# class Person(object): # def __init__(self, name): # self.name = name # def game_with_dog(self, dog): # print('%s 和 %s 正在开开心心的玩耍......' % (self.name, dog.name)) # dog.game() # # xiaoming = Person('小明') #创建人对象 # dog = Dog('旺财') #创建狗对象 # xiaoming.game_with_dog(dog) #让小明跟狗玩耍 # xtq = XiaoTianQuan('飞天旺财') # xiaoming.game_with_dog(xtq)
类方法
# class Tool(object): # count = 0 # @classmethod # def show_tools_count(cls): # print('当前工具数量为%s' % cls.count) # def __init__(self, name1, name2): # self.name1 = name1 # self.name2 = name2 # Tool.count += 2 # tool1 = Tool('锤子') # tool2 = Tool('榔头') # Tool.show_tools_count()'';lkiy.
静态方法:
# class Dog(object): # @staticmethod # def run(): # #不访问实例属性,也不访问类属性 # print('小狗要跑.....') # def jump(self): # print('小狗要跳.....') # # Dog.run() # # Dog.jump() # xiaotianquan = Dog() # Dog.run() # # Dog.jump('xiaotianquan') # xiaotianquan.jump()
转载于:https://www.cnblogs.com/heiguu/p/10098193.html
三大特征 封装 继承 多态相关推荐
- python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)
面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...
- Python学习笔记④——类、面向对象的三大特征 [封装+继承+多态]
✅ Blogger Learns Python is for learning the "Deep Learning". 文章目录 一.面向对象编程的简介 二.类与对象 -- 基础 ...
- OC面向对象的三大特征(封装 继承 多态)习题2 复合
复合:一个类中有一个成员变量是另外一个类的对象. 比如我现在要制作一台电脑,电脑需要CPU,显示器,鼠标和键盘等.这些东西的研发都是很复杂的过程.如果现在有成型的CPU等组件,就可以直接用这些组件攒一 ...
- Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态
Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...
- Java面向对象三大特性(封装继承多态)解释及案例
文章目录 包 包基本语法 命名规则 命名规范 导入包实例 访问修饰符 面向对象编程-封装 面向对象编程-继承 super关键词 super和this的比较 方法重写/覆盖 (override) 注意事 ...
- 深入理解Java面向对象三大特性 封装 继承 多态
1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...
- 面向对象的四大特征 封装 继承 多态 抽象
1.封装 广义: 类 方法 包 的定义本身就是一种封装 狭义: 在设计一个类的时候 将所有的属性设置为私有的 并对各个私有的属性设计相应的 存/取方法 来完成对属性的使用 私有化只能代表封装的特性 可 ...
- c++局部对象是什么_面向对象三大特征: 封装
今日内容 面向对象概述 类和对象的关系 面向对象内存图 private.this关键字和封装 面向对象之构造方法 面向对象三大特征 封装 继承 多态 01. 面向过程和面向对象思想概述 什么是面向过程 ...
- 大数据笔记8—java基础篇4(面向对象-封装-继承-多态)
面向对象 一.面向对象 1.面向过程 1.2.举例 1.3.总结 二.面向对象 1.简述 2.举例 3.思想特点 2.1.类的定义格式 2.1.1.简述 2.2.2.格式 2.3.3.示例 三.类的使 ...
最新文章
- 云时代运维转型必读:容器运维模式的五大场景
- 鸿蒙2.0 安卓,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪
- gdb调试fork+exec创建的子进程的方法
- MAVEN学习笔记-maven的获取和安装
- 用于显示本地通知的跨平台插件flutter_local_notifications
- 如何将RTC中基于AI的音频算法有效的产品化
- SpringBoot与安全
- 关于IE的RegExp.exec
- 几个公共FTP服务器
- 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——A题 切蛋糕
- Android的TextView部分文字点击切换颜色(ClickableSpan)
- Ceph Monitor基础架构与模块详解
- 16. Window close() 方法
- Mysql复合索引的顺序和必要值
- 命令行 - 很好的工具,很强大
- 戏说CAD开发 最简单角度看CAD软件
- 谈谈MySQL如何选择float, double, decimal
- eclipse中jsp页面图片不显示问题
- 微信王者抢先服是什么服务器,王者荣耀抢先服是什么?王者荣耀抢先服介绍
- 计算机系统要素-从零开始构建现代计算机-答案
热门文章
- python 贪婪 非贪婪 匹配
- 空气撑起2万亿市值?币圈十大地雷被视而不见
- kaggle notebook里面如何使用一个完整的项目和py脚本
- java MD5加密的两种方法总结
- flink sql 异常:INTEGER and VARCHAR(2147483647) does not have common type no
- (C语言)石头剪刀布
- unbound支持ecs版本安装,配置
- 小游戏——斗破苍穹——pow_na的博客
- 在线JSON转PlainText工具
- JAVA计算机毕业设计基于web的面向公众的食品安全知识系统源码+数据库+系统+lw文档