面向对象及编程

news2024/10/1 1:25:14

C语言是一门面向过程的编程语言,
C++、Java这些编程语言都是面向对象。
        分门别类:抽取事物的共性,将相似事物归纳为一个类别

面向的对象的核心概念:
        类:就是一个事物的类别 
                |--属性
                |--方法          
        对象(object):某一个类别中的具体案例      

python进行面向对象编程
        定义类
        创建对象
        调用对象的属性或者方法,完成具体案例

定义类:
        分析类的共性:
                静态特征:属性
                动态的行为特征:函数        方法method

python,定义需要关键字class
        class 类名称(父类):
                                #定义类的成员

面向对象的专业术语:
OO(oriented object):面向对象
OOP(oriended object programming):面向对象的编程
OOA(oriented objectanalysis):面向对象的分析
OOD(oriented object design):面向对象的设计
OOT(oriented object test):面向对象的测试

python如何定义类:关键字class

class Classname[(superclass)]:
                def_init_(self):
                def method01():
                                pass

初始化对象
对象名称 = ClassName() #类似Java中:User ul = new User()

面向对象的三大特征:
                封装
                继承
                多态
                【抽象】

封装:在面向对象中,封装往往有两层意思
        1.类封装属性和方法
        2.基于安全性属性考虑,面向对象会将属性私有化

一定要记得,python的标识符命名的特殊的规范:
        1.所有都是大写的,表示常量
        2.大驼峰一般表示类
        3._xxx
                        from xxxx import *
        4.__xxx
                         魔法属性或者方法
        5.__xxx   
                        封装属性或者方法

总结:python中,封装共有三种写法,一般而言,哪一种都可以,根据公司的规定写就ok

继承(extend):
        类与类之间:目的(复用代码)
python如何实现继承:
        classClass_Name(父类):
                  pass

父类(基类,超类):super class

注意:在python中,如果子类中初始化函数不存在,则会根据继承去初始化父类的初始化函数
        如果子类有了自己的初始化函数,要在子类的初始化函数的第一行调用父类的初始化函数
        使用super()._init_([传递对应的属性参数])

方法重写:
                方法重写,方法覆盖(override overwrite)
                        指的是在继承的基础上,子类继承父类的方法不能满足子类使用时,我们就可以重写或覆盖方法。

函数重载(overload)
        在强数据类型的编程语言中(如Java、C、C++等)
                函数名称相同,函数参数个数不同或者类型不同,从而形成多个同样名称的函数调用时,根据参数的个数或者类型自动完成调用函数
                注意:弱数据编程语言中,默认无法实现函数重载,如果要实现,则需要使用特手段

面试题:overload、overwrite、override三者的区别:
补充
        super(),这个全局函数比较特殊,在面向对象中,默认指向父类,是一个指针
多态
        一种事物的多种状态
        面向对象中,多态指的是:在继承的基础上,使用跟大的父类来代替子类的现象,被称为多态简而言之,父类引用指向子类实例
List
ArrayList
ArrayList al = new ArrayList();        //创建子类的方式
List ls = new ArrayList();                //多态
l= ArrayList()
像python、JS等弱数据类型语言,天生支持多态
通过大量的面向对象的案例,进行面向对象的练习

异常处理
        软件的容错能力的处理
        异常:软件运行过程中的不正常像好像,如果不做处理,则会导致软件无法正常执行而挂掉
        异常处理:就是将这种异常进行处理,使得代码能继续正常运行(软件的容错处理)
        异常处理,就是软件的稳定性的提高和容错能力的提高

注意:异常和致命性错误的区别
        异常是一种错误,但是错误不一定是异常一般致命性的错误,需要修改代码来解决而异常是可以通过异常处理的方案来修复

python提供异常处理的方案
try catch解决方案
try catch
表示通过尝试着抓捕一场来进行异常解决
try:
        #有可能出现异常的代码
        #代码
        # .......
except [xx Exception |xxxError]:
        #异常处理
except [xx Exception |xxxError]:
        #异常处理
[else:
        没有异常时执行的代码
]
[finally:
                #必须要执行的代码
]
finally语法
        不管存不存在异常,都会执行该代码块
        所以一些必须要执行的代码建议放在finally中,以保证肯定执行如回收资料、销毁缓存等等
        注意:如果函数中,在finally之前存在了return,而且在finally执行前,已经return,则finally中的修改,不会影响注意:但是finally存在return,则之间的就会失效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1283219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构和算法专题---1、数据结构和算法概述

本文会系统性的介绍算法的概念、复杂度,后续会更新算法思想以及常见的失效算法、限流算法、调度算法、定时算法等,辅助大家快速学习算法和数据结构知识。 概念 数据结构 概述 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或…

Ubuntu之Sim2Real环境配置(坑居多)

不要一上来就复制哦,因为很多下面的步骤让我走了很多弯路,如果可能的话,我会重新整理再发出来 前提: 参考教程 Docs 创建工作空间(不用跟着操作,无用) 1.创建sim2real server container 1.尝试创建sim2r…

Python 解析JSON实现主机管理

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易于阅读和编写的文本形式表示数据。JSON 是一种独立于编程语言的数据格式,因此在不同的编程语言中都有对应的解析器和生成器。JSON 格式的设计目标是易于理解、…

防火墙规则保存及自定义链

目录 防火墙规则保存 备份工具 iptables services 自定义链 自定义链实现方式 删除自定义链 重命名自定义链 防火墙规则保存 命令:iptables -save 工具:iptables services [rootlocalhost ~]# iptables-save > /opt/iptables.bak #将文件保存…

科普类软文怎么写才能提高用户接受度?媒介盒子分享

科普类软文以干货为主,可以给用户带来实用价值,但是相应会比较枯燥。如何才能把科普内容讲得专业又有趣,从而提高用户接受度呢?媒介盒子接下来就分享三大技巧: 一、 联系产品选题 科普类软文想要写好就需要做好选题&…

【数据结构】手撕排序NO.1

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、排序的概念及其运用1.1 排序的概念1.2 常见的算法排序 二、 冒泡排序三、直接插入排…

2023年「全球化新品牌」与品牌出海路径洞察分析

观点:全球化品牌是未来品牌发展的最优选择 什么是全球化品牌? •多市场:在全球多个市场均有业务布局,既包括传统市场,也包括新兴市场。 •全渠道:线上第三方平台品牌独立站社交网络线下实体店,从2C扩展到2B。 •本土…

SSM项目实战-前端-在Index.vue中展示第一页数据

1、util/request.js import axios from "axios";let request axios.create({baseURL: "http://localhost:8080",timeout: 50000 });export default request 2、api/schedule.js import request from "../util/request.js";export let getSchedu…

开关电源调试时,常见的10个问题:

1、变压器饱和 变压器饱和现象 在高压或低压输入下开机(包含轻载,重载,容性负载),输出短路,动态负载,高温等情况下,通过变压器(和开关管)的电流呈非线性增长,当出现此现象时,电流的…

SpringBoot2.x整合WebService实现远程接口调用

一、添加依赖 <!-- SpringBoot 2.4 以下版本--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web-services</artifactId> </dependency><dependency><groupId>org.apach…

java日历功能

java 日历功能 功能概述java代码打印结果 功能概述 输入年份和月份&#xff0c;打印该月份所有日期&#xff0c;头部信息为星期一至星期日 java代码 package com.java.core.demoTest; import java.util.Calendar; import java.util.Scanner;// 打印日历 public class Calend…

接口测试很难?1分钟带你入门接口自动化测试

1、什么是接口&#xff1f; 接口是连接前台和后台的桥梁&#xff0c;前台通过接口调用后端已完成的功能&#xff0c;而无需关注内部的实现细节。借助于接口&#xff0c;可以实现前后台分离&#xff0c;各自完成开发工作后&#xff0c;进行联调&#xff0c;提高工作效率 2、接…

navicate16 2059 plugin http could not be loaded

plugin http could not be loaded 乱码 library path http.dll 今天新装一台机子的navicate遇到这个问题。 查了半天都是说 caching_sha2_password’的解决办法。 然后是咋解决的呢&#xff0c;真是丢脸 由于我是直接从浏览器复制下来的ip&#xff0c;所以虽然我只复制了ip地…

MacOS M芯片 安装MySQL5.7教程

目录 1. 安装Homebrew1.1 快速安装1.2 检查是否安装成功 2. 通过Homebrew安装MySQL2.1 搜索 MySQL 版本2.2 安装MySQL 5.72.3 位置说明2.4 启动MySQL服务2.5 检查服务状态2.6 设置环境变量2.7 重置密码 3. 测试安装 1. 安装Homebrew 1.1 快速安装 /bin/bash -c "$(curl …

YOLOv8改进有效涨点 | 2023 | SPD-Conv空间深度转换卷积(高效空间编码技术)

一、本文介绍 本文给大家带来的改进内容是SPD-Conv&#xff08;空间深度转换卷积&#xff09;技术。SPD-Conv是一种创新的空间编码技术&#xff0c;它通过更有效地处理图像数据来改善深度学习模型的表现。SPD-Conv的基本概念&#xff1a;它是一种将图像空间信息转换为深度信息…

qiankun: 关于ElementUI字体图标加载不出来的问题

问题描述&#xff1a; 子应用使用的是vueelementUI&#xff0c;在项目main.js中需要引入elementUI的样式文件。elementUI的样式文件中有字体文件的引用&#xff0c;是以相对路径的形式写在css文件中的&#xff0c; 本来独立部署项目访问是没问题的&#xff0c;问题出现在以qi…

d3dx9_43.dll如何修复?d3dx9_43.dll文件缺失的多种解决方法指南

d3dx9_43.dll如何修复&#xff1f;d3dx9_43.dll文件丢失是一种常见的计算机问题&#xff0c;它会导致运行某些软件时出现错误。本文将详尽地介绍如何修复这一问题&#xff0c;并对比各种方法的优缺点&#xff0c;以及深入解析该DLL文件的由来及其重要性。 一.多种d3dx9_43.dll修…

MAVLink 协议概述

MAVLink 是一种二进制遥测协议&#xff0c;专为资源受限的系统和带宽受限的链路而设计。MAVLink部署有两个主要版本&#xff1a;v1.0和v2.0&#xff0c;v2.0向后兼容&#xff08;v2.0实现可以解析和发送v1.0数据包&#xff09;。遥测数据流以多播设计发送&#xff0c;而改变系统…

Java中线程池相关的七个参数

在Java中&#xff0c;线程池的七个参数是指线程池的相关配置参数&#xff0c;用来控制线程池的行为和性能。这些参数包括&#xff1a; 1. 核心线程数&#xff08;corePoolSize&#xff09;&#xff1a;线程池中保持的最小线程数&#xff0c;即使线程处于空闲状态&#xff0c;也…

vue3 + TS 项目中使用pinia-plugin-persistedstate持久化缓存

Vue 3和Pinia是一对非常好的组合&#xff0c;可以帮助你构建现代化的Vue应用程序。而pinia-plugin-persistedstate是一个用于在Pinia存储中实现状态持久化的插件。下面我将详细介绍如何在Vue 3应用程序中使用Pinia和pinia-plugin-persistedstate模块。 首先&#xff0c;确保你…