面向对象基础

【基础篇】C#基础知识——面向对象 【基础篇】C#基础知识——面向对象 第一章 C#基础知识——入门 第二章 C#基础知识——面向对象 文章目录【基础篇】C#基础知识——面向对象前言一、C#面向对象的特性二、命名空间2.1 namespace2.2 using2.3 class2.4 程序结构2.5 类的成员2.6 静态与非静态2.7 举例2.8 在线类库帮助三、C#常用类3.1 输入输出类3.1.1 用Console.WriteLine输出3.1.2 用Console.ReadLine输出3.2 Math类3.3 Random类3.4 阅读详情

1. 面向对象概述

c 语言是面向过程的,面向过程就是把一件事按步骤一步一步来实现

而 java、c++ 等是面向对象的,面向对象就是把现实问题抽象为对象,通过调用每个对象的属性或方法去解决问题

面向对象思想主要由以下三个部分组成:

(1)OOA 面向对象分析:按照面向对象的思想来分析业务,对需求中描述的问题,进行模块化的处理

(2)OOD 面向对象设计:是个中间过渡,对 OOA 分析的结果进一步规范化,以便能被 OOP 直接接受

(3)OOP 面向对象程序:把构成问题的各个事务分解成各个对象

2. 类与对象

2.1 类

类决定了某一类对象的外观和行为,由属性和方法组成,创建关键字 class

构造方法与类同名,不含返回值也不用 void ,作用是对类初始化,一个类可以有多个构造方法,一旦显式定义后,系统就不再提供默认的构造方法

方法重载:方法名称相同,参数类型或长度不同

  • 构造方法重载在不同的创建对象的需求下,调用不同的方法来完成对象的初始化
  • 普通方法也能重载

2.2 对象

类是对象的抽象,对象是类的实例,一个类可以创建多个对象,创建关键字 new

new 出来的对象是存放在堆中的,栈存放的是对象的引用(即对象在堆中的地址)

栈:位于 RAM 中,创建程序时 java 必须要知道栈内所有项的生命周期,以便上下移动指针

堆:通常是内存池,创建对象时不用关心堆内存中需要开辟多少存储空间,也不用关注内存占用时长,有很大的灵活性


关于回收内存问题:

栈:当栈内存不存在对象的引用时,则被视为垃圾,由 GC 垃圾回收器自动回收

堆:需要手动回收


匿名对象:没有对象名称的对象

匿名对象只能使用一次,因为没有任何的对象引用,所以被称为垃圾,等待 GC 回收

3. 三大特征

3.1 封装

封装是将类的属性 或 方法隐藏起来,通过权限访问修饰符(public、protected、default、private)进行限制,总的来说,封装是一种信息隐藏技术

封装属性:可以将属性私有化,用 private 修饰;可以提供 getter、setter 方法来供外部访问

封装方法:对外隐藏内部的实现细节,只暴露必要的接口供外部访问


public:对所有类可见

protected:对同一包内的类 和 所有子类可见

default 默认:在同一包内可见

private:在同一类内可见

3.2 继承

继承 extend:允许一个类继承另一个类的属性和方法,通过继承,子类可以重用父类的代码,并在此基础上,添加新的属性和方法,从而实现代码的重用和扩展

this 表示当前方法调用者的地址值;super 代表父类存储空间

java 不支持多继承,子类只能继承一个父类,可以使用接口来实现多继承


抽象类是对类的抽象;接口是行为的抽象,是抽象方法的集合

参数抽象类 abstract接口 interface
实现子类继承 extends 抽象类,如果子类不是抽象类的话,它要重写抽象类的所有抽象方法子类 implements 实现接口,实现接口中所有声明的方法
构造器可以有不能有
访问修饰符抽象类中的方法可以是任意访问修饰符接口方法默认修饰符是public,不允许定义为 private 或者 protected
多继承一个类最多只能继承一个抽象类一个类可以实现多个接口

3.3 多态

多态:允许不同的类通过同样的接口来表现不同的行为,多态性使得可以在运行时才确定要执行的具体方法,而不是在编译时确定

使用多态的前提条件:

(1)子类继承父类

(2)子类对父类的方法进行重写

(3)父类引用执行子类对象

父类类型 对象名称 = 子类对象;
Animal myCat = Cat();
【PINN物理信息网络】基于PINN物理信息网络求解瞬态薛定谔方程(python) 阅读详情

相关推荐

Playwright Java环境配置避坑指南:浏览器路径、类加载与离线部署

Playwright作为现代端到端测试框架,其Java SDK突破了传统Selenium的Driver管理模式,将Chromium/Firefox/WebKit内核视为可编程运行时资源。其核心原理在于SDK与浏览器二进制分离——Maven仅管理Java字节码,而浏览器需独立下载、校验与沙箱加载。这一设计带来显著技术价值:跨平台一致性、进程隔离安全性及多浏览器并行能力;典型应用场景涵盖Spring Boot集成测试、金融级离线CI/CD、Kubernetes容器化部署及Air-Gapped封闭环境。然而,因J

weixin_32956805的博客 679

Java面向对象基础

面向对象 学习内容 l 面向对象思想 l 类与对象及其使用 l 对象的内存图 l 成员变量和局部变量的区别 l 匿名对象 l 封装(private) l this关键字 l 构造方法 l static关键字 l 继承 l 多态 l 抽象类 l 接口 l 包和导包...

LyncDwight的博客 1万+

STM32 BLDC无刷电机霍尔信号捕获与换相控制实战解析

本文深入解析了STM32如何实现BLDC无刷电机的霍尔信号捕获与换相控制。详细阐述了硬件接口配置、定时器霍尔传感器模式的使用、抗干扰的滤波器与软件容错设计,以及中断服务与换相逻辑的实战代码。重点解决了信号抖动、换相不准等常见问题,旨在帮助开发者构建稳定可靠的电机驱动基础。

weixin_29193259的博客 369

面向对象基础总结

从今天起,我打算开始研究一下设计模式,以前也有涉及过这方面的知识,不过都不够深入和系统,最近正好静下心来总结一下,今天先从最简单的面向对象基础开始。 1.类与实例    类就是具有相同的属性和功能的对象的抽象的集合。类名一般要大写。比如说人类,人类都有眼睛,手,脚,这些是人都有的属性。而人能够吃饭,唱歌,跑步,这些是人能完成的功能。我是人类,所以我就是人类的一个具体的实例。 2.构造方法

一想天开 487

SpringAi 通过大模型来实现调用自己的Api

摘要 本文介绍了如何利用Spring AI的Tools机制扩展大模型能力,实现业务系统集成。通过@Tool和@ToolParam注解定义工具方法,将订单查询和关闭功能暴露给大模型调用。关键实现包括:1)使用详细描述标注工具方法和参数;2)在ChatClient中注册工具服务;3)集成对话记忆保持上下文。该方法使AI具备操作业务系统的能力,形成"认知-决策-执行"闭环,大幅提升了模型在实际业务场景中的应用价值。

又要搬砖了 838

从零开始 使用OMNET++结合VEINS,INET和SUMO的联合仿真

搭建仿真的环境,导入VEINS和INET开源库,使用INET库中提供的网络协议和功能模型来模拟通信协议和网络功能,使用SUMO创建道路网络和车辆轨迹,并导出到OMNeT++中 在OMNeT++中使用VEINS通过socket和SUMO连接,借助VEINS实现的TRACI接口来设置车辆相关的行为和场景,最后在OMNET++中结合VEINS,SUMO和INET运行联合仿真实验,并分析车辆在遇到紧急情况下的通信状况和具体行为

mjmmm的博客 1万+

JAVA基础之面向对象

面向过程POP(ProcedureOrientedProgramming),是一种基本的编程思想,在面对一个需要解决的问题时,将问题按流程逐步实现,注重执行的细节。用于修饰类和方法,表示抽象的。修饰方法,该方法称为抽象方法,没有方法体,同时该方法所在类一定也要使用abstract修饰成为抽象类。抽象方法只能出现在抽象类中,不能出现在普通类中。抽象类中可以没有抽象方法抽象类中有构造方法,但该构造方法不能使用new调用,所以抽象类不能创建对象抽象类中的构造方法,在创建其子类对象时自动调用。...

Yc_Lq的博客 856

NLP-Beginner 任务一:基于机器学习的文本分类(超详细!!)

NLP-Beginner 任务一:基于机器学习的文本分类传送门一. 介绍1.1 任务简介1.2 数据集1.3 流程介绍二. 特征提取2.1 词袋特征(Bag-of-word)2.2 N元特征 (N-gram)三. 最优化求解3.1 Softmax回归介绍3.2 损失函数3.3 梯度下降3.4 学习率四. 代码及实现4.1 实验设置4.2 结果展示4.3 代码新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、

0oTedo0 9937

PHP面向对象基础

转载自:黑马程序员武汉中心 文章目录面向对象基础一、面向对象编程思想**二、面向对象基础****1、面向对象关键字说明****2、面向对象简单技术实现****3、类成员****4、访问修饰限定符****5、类内部对象****6、面向对象开发规范****7、构造方法****8、析构方法****9、对象传值****10、范围解析操作符(类常量访问)****11、静态成员****12、self关键字**...

末初 · mochu7 1322

STM32实现简单的智能电子相框

具体的代码案例和详细的代码实现超过5000字,无法在此篇文章中提供。但是,你可以参考STM32的官方文档和相应的图形库和多媒体库的文档,以获得更详细的实现细节和代码示例。对于硬件,我们可以选择使用STM32开发板,如STM32F4 Discovery。对于软件开发环境,我们将使用Keil MDK-ARM作为开发工具,并使用STM32CubeMX进行代码配置。在本文中,我们将使用STM32单片机实现一个简单的智能电子相框,包括显示照片、播放视频和音乐功能。接下来,我们将详细描述实现智能电子相框的步骤。

2401_85625565的博客 1006

15、基于最优传输的协作多视图聚类框架

本文提出了一种基于最优传输理论的协作多视图聚类框架,通过引入协作学习机制在不同视图间建立先验交互,以提升共识聚类的质量。框架包含两种新方法:协作共识投影方法(CoCP)和基于新表示的协作共识方法(CoCNR)。CoCP在全局空间中整合多视图信息并进行共识投影,而CoCNR则通过协作编码生成新的数据表示以实现更优聚类。方法利用熵正则化的Wasserstein距离与Wasserstein重心,有效捕捉数据分布间的几何结构,并通过聚合步骤获得统一模型。实验结果表明,所提方法在多个数据集上均优于现有方法,具有良好的

gpt4scribbler的博客 86

Java基础篇面向对象作业—01

Java基础篇面向对象作业—01 问题一:什么是面向对象? 面向对象是一种编程思维,是相对于传统的面向过程的思维来讲的; 传统的面向过程强调的是解决问题的具体步骤,具体方法,编程思路是自顶向下,不断分解地解决问题。 面向对象更加强调解决问题的主体,谁来解决问题,创建可以解决问题的对象,来操作数据,面向对象的编程思路是自底向上,不断拼接; 面向对象的好处有很多,比如面向对象更符合人类的思维模...

Steven_YE 239

Pdu Router(PduR)模块

1. PduR路由基本功能 2. PduR总线网关功能 3. PduR缓存机制 4. 总结

weixin_43759043的博客 3850

C++基础之面向对象基础

类内的成员(尤指成员函数)可以声明与定义分离声明要在类内定义可以写在类外这种写法随后后期学习比重会逐渐增加。类内声明:函数类型 函数名(参数列表);类外定义格式:函数类型 类名::函数名(参数列表)...函数体...private:public://先声明//构造函数//后定义name=n;name=n;

学习过程记录,欢迎大家交流互动,互相学习 1047

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java基础与面向对象

Java基础和面向对象基础

qq_74078496的博客 1170

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python面向对象基础

AttributeError: 'Cat' object has no attribute 'name' 属性错误:'Cat' 对象没有 'name' 属性。class 类名: ​ def 方法1(self, 参数列表): pass def 方法2(self, 参数列表): pass。在使用面相对象开发前,应该首先分析需求,确定一下,程序中需要包含哪些类!提示:需求中没有涉及的属性或者方法在设计类时,不需要考虑。,稍后会给大家介绍一些常用的 内置方法 / 属性。调用的方法,方法内的。对象变量 = 类名()

m0_71804489的博客 1006

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

面向对象基础篇1

面向对象是更大的封装,在一个类中封装多个方法,这样通过这个类创建出来的对象,就可以直接调用这些方法。首先我们先定义一个只包含方法的类。class 类名:def 方法1(self, 参数列表):passdef 方法2(self, 参数列表):pass在该类中,方法的定义和函数几乎是一样的,区别在于类中的方法第一个参数必须是self。

qq_65321713的博客 1097

面向对象基础笔记

1、面向对象基础 1.1、面向对象思想 1.1.1、概述 ​ 面向对象(Object Oriented)是软件开发方法。面向对象的概念和应用已经超越了程序设计和软件开发,是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。 ​ 面向对象方法是相对于面向过程来讲的,指的是把 相关的数据和方法组织为一个整体 来看待,从更高的层次来进行系统建模,更贴近事务的自然运行模式。 面向过程到面向对象思想层面的转变: 面向过程关注的是执行的过程,面向对象关注的是 具备功能的对象 面向对象到面向过程

weixin_43813836的博客 187

Python学习 --面向对象基础

创建类class 类名:def 方法1(self, 参数列表):passdef 方法2(self, 参数列表):pass# 创建对象对象变量 = 类名()# 示例class User: # 创建类print("学习")print("吃饭"+food)print("睡觉")lufei = User() # 创建对象 对象名称 = 类名()lufei.study() # 对象对类方法的调用lufei.eat("肉") # 传参在Python中使用类创建对象之后tom。

EvanSun_ 的博客 1360

Java基础篇面向对象总结

"理解万事万物皆对象" 基本类型和引用类型 匿名对象的使用 方法重载loading.... 方法重写 方法重载与方法重写的区别: 可变个数的形参 递归地使用 封装和隐藏 四种权限修饰符 继承 多态 属性 方法 构造器 代码块 内部类(了解) this关键字 package关键字 import关键字 super关键字 instanceof关键字 static关键字 abstract关键字 Interface关键字 equals() toString()方法 单例模式

weixin_44606952的博客 5232

python基础——面向对象

最近看到一篇非常深奥的算法源码,发现它的底层逻辑全部都是由类实现的,而这种实现方式有非常大的好处,同样对于编程人员来讲,这种实现方式无疑增加了难度和挑战。没有受过系统训练的编程人员,常规的思路与编程习惯基本上都会是面向过程编程,很明显这种方式较为简单,但问题是这种思维方式,一旦遇到变换后其后期维护比较困难。由哪一个类创建出来的对象,就拥有哪一个类中定义的:属性、方法。在程序开发中,先有类,再有对象(类似于先有图纸,再有实物)

不曾走远的博客 736

Java基础、面向对象总结

 编程基础 1)变量(局部变量,参数变量,实例变量,类变量) 2)运算符(算术,关系,逻辑,赋值,条件,位运算) 3)语句(顺序语句,分支语句,循环语句) 4)函数(概念,定义,场合,调用,重载) 5)数组(一维,多维) 面向对象 1)两大对象(类对象,类的对象(new)) 2)三大特性(封装,继承,多态) 3)两大修饰符(static,final) 4)两大抽象(接

zwyAndroid的博客 464
上一篇: 入门函数式编程
下一篇: 计算机网络
ZoeLandia
博客等级 码龄6年 734粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值