27 - 面向对象的三大特征 - 封装

一、C++笔记之面向对象特性---封装 阅读详情

目录

一、面向对象的三大特征

二、封装的概念

三、封装案例1-小明爱跑步

1、需求

2、类的设计

3、代码实现

四、封装案例1扩展-小明爱跑步,小美也爱跑步

1、需求

2、注意

3、代码实现

五、封装案例2-登陆

1、需求

2、类的设计

3、代码实现

六、封装案例3-摆放家具

1、需求

2、类的设计

3、剩余面积

4、代码实现


一、面向对象的三大特征

二、封装的概念

  • 根据需求将属性和方法封装到一个抽象的类中的过程,就是封装。
  • 外界使用 类 创建对象,然后让对象调用类中的方法。
  • 对象方法的细节都被 封装 在类的内部。

三、封装案例1-小明爱跑步

1、需求

  • 小明 体重 75.0 公斤;
  • 小明每次 跑步 会减肥 0.5公斤;
  • 小明每次 吃东西 体重增加一公斤。

2、类的设计

3、代码实现

# 封装案例一:小明爱跑步
class Person:
    def __init__(self,name,weight):
        self.name = name
        self.weight = weight

    def run(self):
        print(f'{self.name}当下体重是{self.weight}')
        print(f'{self.name}爱跑步,跑步锻炼身体!')
        self.weight -= 0.5
        print(f'{self.name}这次跑完步的体重是{self.weight}')

    def eat(self):
        print(f'{self.name}吃了很多东西...')
        self.weight +=1

    def __str__(self):
        return f"我的名字叫{self.name},体重是{self.weight}"

xiaoming = Person('小明',75)
xiaoming.run()
xiaoming.eat()
print(xiaoming)

四、封装案例1扩展-小明爱跑步,小美也爱跑步

1、需求

  • 小明 和 小美 都爱跑步;
  • 小明 体重 75.0 公斤;
  • 小美 体重 45.0 公斤;
  • 每次 跑步 会减肥 0.5公斤;
  • 每次 吃东西 体重增加一公斤。

2、注意

  • 同一个类 创建的多个对象之间,属性 互不干扰。

3、代码实现

# 封装案例一:小明爱跑步
class Person:
    def __init__(self, name, weight):
        self.name = name
        self.weight = weight

    def run(self):
        print(f'{self.name}爱跑步,跑步锻炼身体!')
        self.weight -= 0.5

    def eat(self):
        print(f'{self.name}吃了很多东西...')
        self.weight += 1

    def __str__(self):
        return f"我的名字叫{self.name},体重是{self.weight}"


"""
同一个类 创建的多个属性之间 互不干扰
"""
xiaoming = Person('小明', 75)
xiaoming.run()
xiaoming.eat()
print(xiaoming)
print("
")
xiaomei = Person('小美', 45)
xiaomei.run()
xiaomei.eat()
print(xiaomei)

五、封装案例2-登陆

1、需求

  • 进入某web项目登录页面,输入用户名、密码、验证码之后登陆系统。

  • 模拟实现登录操作,输出每一步的登录信息。

2、类的设计

3、代码实现

# 封装案例2-登陆
class LoginPage:
    def __init__(self,username,password,verify_code):
        self.username = username
        self.password = password
        self.verify_code = verify_code

    def login(self):
        print(f'请输入用户名:{self.username}')
        print(f'请输入密码:{self.password}')
        print(f"请输入验证码:{self.verify_code}")
        print(f'点击登录按钮')

login_page = LoginPage('admin','admin','123456')
login_page.login()

六、封装案例3-摆放家具

1、需求

  • 房子(House)有户型、总面积 和 家具名称列表。

-新房子没有任何家具。

  • 家具(HouseItem)有 名字 和占地面积,其中

-席梦思(bed)占地 4 平米

-衣柜(chest)占地 2 平米

-餐桌(table)占地 1.5平米

  • 将以上三件 家具添加 到 房子 中

  • 打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表。

2、类的设计

3、剩余面积

  • 在创建房子对象时,定义一个剩余面积的属性(house_free_area),初始值与房屋总面积(house_total_area)相等。

  • 当调用add_item(self)方法,向房间 添加家具时,剩余面积=房屋总面积-家具面积。

4、代码实现

# 家具类
class HouseItem:
    def __init__(self,item_name,item_area):
        self.item_name = item_name   #家具名字
        self.item_area = item_area   #家具面积

    def __str__(self):
        return f'{self.item_name}占地{self.item_area}平米'
# 房子类
class House:
    def __init__(self,house_type,area):
        self.house_type = house_type  #房屋类型
        self.house_total_area = area  #房屋总面积
        self.house_free_area = area   #初始房屋剩余面积等于房屋总面积
        self.item_name_list = []      #房屋中的家具列表,刚开始没有家具

    def __str__(self):
        return f'户型:{self.house_type},总面积:{self.house_total_area}平米,剩余面积:{self.house_free_area}平米,家具列表:{self.item_name_list}'
    """
    self:房子对象
    item:家具对象(传参)
    """
    def add_item(self,item):
        # 1.先判断房子的剩余面积和家具的占地面积的关系
        if self.house_free_area > item.item_area:
            print(f'添加家具:{item.item_area}')
            # 2.将家具对象中的家具名称添加到房子对象的家具列表中
            self.item_name_list.append(item.item_name)
            # 3.修改房屋剩余面积
            self.house_free_area -= item.item_area
        else:
            print(f'房屋剩余面积不足,换大房子吧~~~')

# 创建家具对象
bed = HouseItem('席梦思',4)
chest = HouseItem('衣柜',2)
table = HouseItem('餐桌',1.5)

# 创建房子对象
house = House('三室一厅',100)
print(house)
house.add_item(bed)
print(house)
house.add_item(chest)
print(house)
house.add_item(table)
print(house)

面向对象三大特征:继承、封装、多态 (泛型) 封装:封装是一个概念,它的含义是把方法、属性、事件集中到一个统一的类中,并对使用者屏蔽其中的细节问题。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。 比如我们将一个房子看做是一个对象,里面的漂亮的装饰,如沙发、电视剧、空调、茶桌等等都是该房子的私有属性,但是如果我们没有那些墙遮挡,是不是别人就会一览无余呢?没有一点儿隐私!就是存在那个遮挡的墙,我们 阅读详情

相关推荐

实战解析:如何用Python逆向破解FastMoss的TikTok数据加密签名(附完整代码)

本文详细解析了如何用Python逆向破解FastMoss平台的TikTok数据加密签名机制,包括MD5加密算法和JS逆向分析。通过完整的Python代码示例,帮助开发者理解签名生成原理并实现自动化请求,提升数据获取能力。

weixin_30955617的博客 558

《零基础学python》---第七章 面向对象程序设计

面对对象概述 对象 对象是一个抽象概念,英文称作“Object”,表示任意存在的事物。 在python中,一切都是对象。即不仅是具体的事物称为对象、字符串、函数等也都是对象。 类 类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。 面向对象程序设计的特点 面向对象程序设计具有三大基本特征:封装、继承和多态。 1.封装 封装是面向对象编程的核心思想,将对象的属性和行为封装...

T_T_T_T_的博客 362

Caffeine:为每个元素动态设置过期时间

Caffeine利用expireAfter方法实现为每个元素动态设置过期时间

大数据开发、JAVA开发、人工智能AI 1万+

第十二天Python之面向对象封装案例

目标 封装 小明爱跑步 存放家具 一、封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 ——将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象 ,然后 让对象调用方法 对象方法的细节 都被 封装 在 类的内部 二、小明爱跑步 需求 小明 体重 75.0 公斤 小明每次 跑步 会减肥 0.5 公斤 小明每次 吃东西 体重增加 1 公斤 提示:在对象的方法内部,是可以直接访问对象的属性的! 代码实现: class Person: def __ini

Sunshine________的博客 506

基于STM32F103C8T6的红外循迹避障小车

编程思路:控制核心板IO口的电平(即电机驱动模块的AIN1,AIN2,BIN1,BIN2)从而控制AO1、AO2、BO1、BO2的电平高低,进而控制电机使其正转、反转、不转。由于单纯地拉高拉低电平只能让电机在转与不转的状态切换,故决定利用TIM4的两个通道分别产生两路PWM信号来控制电机速度,四个电机两个一组,同一侧的两个连接在同一个PWM上。(#include "dianji.h"文件中同时写了对循迹模块引脚的初始化)

weixin_48743503的博客 1万+

8、对比 LightGBM、XGBoost 和深度学习

本文对比了LightGBM、XGBoost和深度学习模型(特别是TabTransformer)在处理表格数据时的性能差异。从模型复杂度、数据准备、训练时间、准确性和适用场景等方面进行分析,重点探讨了三者在人口普查收入预测任务中的表现。文章详细介绍了XGBoost与LightGBM的核心特性与区别,深入讲解了TabTransformer的架构与实现,并涵盖了分类特征编码、缺失值处理和类别不平衡等关键数据预处理技术,为选择合适的表格数据建模方法提供了实践指导。

julia4scientist的博客 120

java 面向对象三大特性之封装 万字详解(超详细)

Java 面向对象三大特性之封装,详细讲解了private关键字,this关键字,以及构造器,一文讲透!

优快云 / 稀土掘金/ B站 / GitHub: Cyan_RA9 4060

YOLOv11 Neck革新:当SDI遇上BiFPN,带你打造精度飙升的特征融合网络

对于科研:这是一个新颖的特征融合思路,能做出差异化的实验,发论文、做项目都很有价值;对于工程:它能解决小目标漏检、大目标定位不准的痛点,让你的检测系统在工业质检、智能安防等场景下更可靠;对于技术成长:掌握了SDI和BiFPN的设计逻辑,你再去看其他特征融合方法(比如FPN、PAN),会有“一通百通”的感觉,以后优化任何检测模型都能举一反三。如果你之前在目标检测的精度上遇到了瓶颈,不妨试试SDI+BiFPN——它就像给YOLOv11装上了“透视眼”,让模型能看清每一个细节。

FJN110的博客 302

【JAVA SE基础篇】27.面向对象三大特征之封装

1.封装的作用 程序设计要追求”高内聚,低耦合“ 高内聚:类的内部数据操作细节自己完成,不允许外部干涉。 低耦合:仅暴露少量的方法给外部使用,尽量方便外部调用。 类似设计电视,冰箱也是,外部看起来很简单,就几个开关,方便使用。内部很复杂,不对外展示。 封装的概念就产生于此,把对象的属性和操作结合为一个独立的整体,并且尽可能的隐藏对象的内部实现细节。 封装的优点: 1.提高代码的安全性和复用性 2.高内聚(封装细节,便于修改内部代码,提高可维护性) 3.低耦合(简化外部调用,便于调用者使用,

709

微信小程序 - 详细实现打开跳转第三方 H5 网页链接,在微信小程序内直接跳转打开第三方网站链接详细教程(支持跳转公众号文章等,直接复制代码即可)

小程序跳转h5,小程序-Taro小程序中打开h5页面链接,...小程序跳转h5链接(web-view)_微信小程序,小程序如何跳转h5页面,小程序跳转到第三方H5网页,微信小程序跳转第三方H5的方法,小程序-实现怎么跳转打开H5网页链接(或跳转至公众号文章,打开第三方网站,放校验文件,怎么配置业务域名,校验文件验证域名,把校验文件放到对面网站,别人的服务器也打不开没权限怎么放呢,勾选不校验合法域名,txt,打不开别人的网页怎么办,真机调试打不开,无法跳转,有什么其他办法不放校验文件吗,后台配置,怎么

🏆 前端领域优质创作者 3万+

关闭搜狗输入法右下角广告的解决方案

本文主要介绍了关闭搜狗输入法右下角广告的解决方案,希望能对使用搜狗输入法的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

面向对象的三个基本特征是:封装、继承、多态

1.面向对象的三个基本特征是:封装、继承、多态 1)继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继 承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的 重要手段。 2) 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象 的本质就是将现实世界描绘成一系...

qq_41636724的博客 765

YOLOv11 改进 - 特征融合 | RepGFPN重参数化特征金字塔网络 ,实现高效多尺度特征交互与融合

本文介绍了DAMO - YOLO目标检测方法及其相关技术在YOLOv11中的结合。DAMO - YOLO扩展了多项新技术,如MAE - NAS搜索检测主干网络、Efficient - RepGFPN构建检测neck等。在neck设计上,针对原始GFPN存在的问题,提出Efficient - RepGFPN,包括对不同尺度特征使用不同通道数、删除Queen - Fusion中额外上采样操作、改进特征融合方式等。我们将相关模块集成进YOLOv11,替换部分模块。

魔改工程师的博客 937

Java面向对象三大特征

面向对象程序三大特性:封装、继承、多态。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说就是套壳屏蔽细节。使用继承的好处1.可以把多个子类重复的代码抽取到父类中,提高代码的复用性。2子类可以在父类的基础上,增加其他的方法和功能,使子类更强大。this:理解为一个变量,表示当前方法调用者的地址;super:代表父类的储存空间以下是图片解释以下是文字叙述【相同点】都是Java中的关键字只能在类的非静态方法中使用,用来访问非静态成员方法和字段。

sponge121211的博客 1306

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

面向对象的三大特征,封装、继承、多态的个人理解以及代码分析

面向过程:我们以前使用的是面向过程编程,你需要清除每个实现步骤,每个步骤每行代码都要仔仔细细的编写,      不知道过程就找不到结果,找到实现过程就可以得到实现结果。      例如: 我们在外打工租房子,我们需要了解每个每个房屋的出租信息,不然是找不到房子的。 面向对象:对象帮我们做事情,找到对应的对象我们就可以得到想要的结果。      例如: 我们找房子不在如此的繁琐...

deyongcai7004的博客 767

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

面向对象的三大特征

目录类与对象 续1. 面向对象的三大特征1.1 封装1.2 继承1.3 多态2. 静态语言与动态语言3. 特殊方法和特殊属性4. 类的浅拷贝与深拷贝 类与对象 续 1. 面向对象的三大特征 1.1 封装 封装: 提高程序的安全性 将数据(属性)和行为(方法)包装到类对象中。在方法内部对属性进行操作,在类对象的外部调用方法。这样,无需关心方法内部的具体实现细节,从而隔离了复杂度。 在Python中没有专门的修饰符用于属性的私有,如果该属性不希望在类对象外部被访问,前边使用两个“_”。 1.2 继承 继承:

xiamuandsansan的博客 670

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java中面向对象的三大特征

java中面向对象的三大特性 封装性 继承性 多态性 一、封装 1.概念 Java里面所谓的封装就是隐藏对象的属性以及实现细节,外部只有访问的权限。增加了代码的保密性。 2.优点 将不需要对外部提供的属性隐藏起来,提高了代码的保密性,安全性。 3.实现形式 给属性加上 pritvate 修饰符,同时需要提供相应的set、get方法。 4.代码实现 package demo; /** * &...

weixin_43912568的博客 175

面向对象三大特性之封装

面向对象的三大基本特征: 封装:封装是指将对象的实现细节隐藏起来,然后通过公共的方法来向外暴露该对象的事功能。 继承:即城市面向对象实现软件服用的重要手段,当子类继承父类后,子类是一种特殊的父类,能直接或间接获得父类的成员。 多态:多态是可以直接把子类对象赋给父类变量,但是运行时依然表现出子类的行为特征,这意味着同一类型的对对象在运行时可能表 现出不同的...

diaochoufu7325的博客 93

27访问修饰符以及面向对象的三大特征

目录访问修饰符Java本身提供了四个访问修饰符举例面向对象的三大特征封装定义目的举例继承多态 访问修饰符 就是确定类、变量、方法等能不能够被正常访问的修饰符 Java本身提供了四个访问修饰符 public 在任何地方都可以正常访问,权限最大 protected 同包、子类、同类 默认(缺省) 不写 同包、同类 private 同类 举例 面向对象的三大特征 封装 定义 从广义上来说,封装就是将物品保管起来封存起来 面向对象上说的封装,是一种特指: 将类的属性私有化(不在

nanguato的博客 200

java面向对象三大特征_Java面向对象概述和三大特性

Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心。围绕着 Java 类和 Java 对象,有三大基本特性:封装是 Java 类的编写规范、继承是类与类之间联系的一种形式、而多态为系统组件或模块之间解耦提供了解决方案。本文主要围绕这三大特性介绍一下 Java 面向对象、组件解耦的核心思想。1、面向对象思想面向对象编程是当今主流的程序设计思想,已经取代了过程化程序开发技术,Ja...

weixin_42525328的博客 440

面向对象的三大特征--封装

封装,继承与多态 封装特征: 实际工作中很多的成员不方便为对象之外的访问或者操作的,所以需要限定以下是否可以操作成员。 封装特性就是对于成员操作进行限制的保护性措施! 面向对象的封装分为三个级别: 私有化封装 OK 受保护的封装(暂时不讲,在继承章节讲解) 公共的封装 OK 对象/类成员的访问: 1.当前...

weixin_34015566的博客 127

java面向对象三大特性_Java面向对象概述和三大特性

Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心。围绕着 Java 类和 Java 对象,有三大基本特性:封装是 Java 类的编写规范、继承是类与类之间联系的一种形式、而多态为系统组件或模块之间解耦提供了解决方案。本文主要围绕这三大特性介绍一下 Java 面向对象、组件解耦的核心思想。1、面向对象思想面向对象编程是当今主流的程序设计思想,已经取代了过程化程序开发技术,Ja...

weixin_32232809的博客 548
上一篇: 0 基础 Java 自学之路(2021年最新版)
下一篇: C++实现员工信息管理系统
AIGC镜像空间
博客等级 码龄5年 4万+粉丝 689原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值