java面向对象(上)

一.面向对象与面向过程

1.面向过程

面向过程(procedure Oriented Programming),简称POP,主要思想就是将问题分解成一个个步骤去解决,把这个步骤称为函数.

典型语言:C语言

优点:可以大大简化代码

缺点:当代码量过大时,不方便维护

2.面向对象

面向对象(Object Oriented Programming),简称OOP,主要思想是首先分析解决该问题需要哪些功能,抽象出事物的特征,再将这些功能和特征封装成类.

典型语言:C++,java,python

优点:适合解决复杂问题,代码的维护性高,扩展性强

总结:面向对象和面向过程两者是相辅相成的,当面向对象对功能具体实现时,利用的也是面向过程的思想

二.类

1.类的结构

类:一些拥有相同特征的事物的抽象,类中可以定义以下内容

(1)成员变量:即事务的属性描述

(2)方法:事务的行为动作进行定义

(3)构造方法:初始化对象

(4)块:一段没有名称的代码块

(5)内部类:即在类中定义的类

2.类的定义

(1)发现类:将问题中的事务抽象成一个个类的过程

类的声明格式:[访问权限修饰符] [修饰符] class [类名]

访问权限修饰符:public,无(默认)

修饰符:final,abstract

关键字class用来定义一个类,类名首字母大写

(2)发现类的共有属性(成员变量)

成员变量的声明格式:[访问权限修饰符] [修饰符]  type 变量名

注意:

(1)成员变量是定义在方法体之外,类当中的变量

(2)成员变量的作用范围是整个类域

(3)成员变量的类型可以是java中的任意类型(基本类型和引用类型)

(4)在定义成员变量时,可以对其进行初始化,如果不初始化,java使用默认值对其初始化

(5)成员变量可以被类中方法、构造方法和特定类的语句块访问.

(3)发现类中的共有行为(成员方法)

成员方法的声明格式:[访问权限修饰符] [修饰符] 返回值 方法名(形参类型 形参名...){方法体}

三.对象

1.什么是对象

对象:是类的具体实例,是以类为模板在内存中创建的实际存在的实例

2.如何创建对象

Car car = new Car();

 java中利用new关键字可以在内存中开辟一个空间用来存储对象的信息,并返回该内存地址,之后利用car引用来指向该内存地址,就可以使用该对象

3.类和对象的关系

类是抽象的模板,对象是具体的实例,现实中是先有对象再有类,而编程时先有类,再有对象

四.构造方法 

构造方法:给成员变量赋初值

(1)方法名与类名相同

(2)无返回值,且不用void修饰

(3)类中会默认生成一个无参的构造函数,给成员变量赋默认值

(4)如果自己定义了有参构造方法,则类中的无参构造方法不会生成,要想使用时,要自己显示写出来

五.方法的重载

方法的重载:在同一个作用域中,可以有多个方法名相同,参数不同的方法,就叫方法的重载

参数不同(主要有三方面不同)

(1)参数的个数不同

(2)参数的类型不同

(3)参数的顺序不同

调用时,会根据参数不同去选择具体调用哪一个方法

注意:方法的重载和返回值无关

六.对象与引用

1.对象与引用的关系

java中除了基本类型,其他的都是引用类型,我们创建的对象就是通过引用对其进行操作的

Car car = new Car();

这句话实际上有三层含义

(1)我们声明了一个引用变量car,它的类型是Car,即Car car;

(2)new Car();在堆中开辟了一个Car类型的对象

(3)car = new Car();将该对象的地址赋给car这个引用变量,相当于car指向了该对象的地址空间,所以我们可以通过car这个引用变量去操作该对象.

引用其实类似C语言中的指针,不过使用上更加方便

2.值传递与引用传递

值传递:基本数据类型在传参时,使用的是值传递,即形参是实参的临时拷贝,形参的改变不会影响实参

引用传递:引用类型和引用类型之间的传参,传的是地址,一方改变了该引用所指向的内容,另一方的也会改变,因为两个引用指向的是同一个地址

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

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

相关文章

Harbor 源码编译arm版本镜像

1. 先准备一个国外的arm服务器,(使用国内的也行,只是有时候下载依赖会断,需要科学上网) 2. git clone harbor的源码包,切换到要编译的分支 3. 修改harbor/Makefile Makefile里面的这些字段设置为true&…

四川财谷通信息技术抖音小店信誉之选,购物新体验

在当今数字化浪潮的推动下,电商平台的兴起为人们的生活带来了极大的便利。而在众多电商平台中,抖音小店以其独特的社交属性和便捷的购物体验,逐渐赢得了消费者的青睐。四川财谷通信息技术有限公司旗下的抖音小店,更是凭借其可靠的…

记录SpringBoot启动报错解决

记录SpringBoot启动报错解决 报错现场 Failed to configure a DataSource: url attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider the following:If you want an embedde…

33.获取入口点

上一个内容:32.双击列表启动目标游戏 前置知识 25.入口点注入(查看pe头)、32.双击列表启动目标游戏 以它的代码为基础进行修改 效果图: 代码实现:原理通过读文件流的方式把文件加载到内存中然后解析pe结构 void CWnd…

uniapp 实人认证

首先Dcloud创建云服务空间,开启一键登录并充值 下一步 1. 右键项目 》 创建uniCloud云开发环境 》右键uniCloud》关联云服务空间 2. cloudfunctions右键 新建云函数,任意命名(例:veify),然后右键项目》管…

Python 基础:异常

目录 一、异常概念二、处理异常2.1 抛出异常2.2 使用 try-except 代码块2.3 使用 try-except-else 代码块2.4 静默失败 三、总结 遇到看不明白的地方,欢迎在评论中留言呐,一起讨论,一起进步! 本文参考:《Python编程&a…

Vite文件目录结构介绍

我们通过命令create-vite shop-admin基于Vite创建vue3项目后,其默认的文件目录结构如下: shop-admin ├─ index.html ├─ package-lock.json ├─ package.json ├─ public │ └─ vite.svg ├─ src │ ├─ App.vue │ ├─ assets │ │ └…

C++多重继承,虚基类与友元

一.多重继承 就是一个类继承多个基类&#xff1b; class <派生类名>&#xff1a;<派生方式1><基类名1>,<派生方式n><基类名n> class Derived:public:Base1,public:Base2 上述形式&#xff1a;基类之间由逗号隔开&#xff0c;且必须指明继承方式…

【Python绘画】气球祝福节日快乐

本文收录于 《一起学Python趣味编程》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、代码示例三、知识点梳理四、总结 一、前言 本文介绍如何使用Python的海龟画图工具turtle&#…

示例:WPF中DataGrid简单设置合并列头

一、目的&#xff1a;应用DataGridTemplateColumn列模板&#xff0c;去拆分列头和单元格布局的方式设置列头合并样式 二、实现 效果如下 三、环境 VS2022 四、示例 应用DataGridTemplateColumn自定义列头信息和单元格信息 <DataGrid AutoGenerateColumns"False"…

【机器学习】线性回归:从基础到实践的深度解析

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 线性回归&#xff1a;从基础到实践的深度解析引言一、线性回归基础1.1 定义与目…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 机器人搬砖(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

怎么缩小pdf文件大小

在数字化时代&#xff0c;pdf文件已经成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;随着pdf文件内容的增多&#xff0c;其大小也会相应增加&#xff0c;这给文件的传输、存储和共享带来了诸多不便。因此&#xff0c;如何有效地压缩pdf文件大小&#xff0c;成为了…

【Kafka】Kafka生产者数据重复、数据有序、数据乱序-07

【Kafka】Kafka生产者数据重复、数据有序、数据乱序-07 1. 数据重复1.1 数据传递语义1.2 幂等性1.2.1 如何开启幂等性1.2.2 同一个消息&#xff0c;多个分区都会存在吗&#xff1f; 1.3 事务1.3.1 Kafka 事务原理1.3.2 Kafka事务的作用和意义作用具体应用场景 2. 数据有序3. 数…

Python数据可视化:直方图、核密度估计图、箱线图、累积分布函数图

本文使用数据来源自2023年数学建模国赛C题&#xff0c;以附件1、附件2数据为基础&#xff0c;通过excel的数据透视表等功能重新汇总了一份新的数据表&#xff0c;从中截取了一部分数据为例用于绘制图表。绘制的图表包括一维直方图、一维核密度估计图、二维直方图、二维核密度估…

[机器学习算法] Q学习

Q学习&#xff08;Q-Learning&#xff09;是一种基于值的强化学习算法&#xff0c;用于在给定状态下选择动作&#xff0c;以最大化累积奖励。它通过不断更新一个称为Q表&#xff08;Q-table&#xff09;的表来学习动作的价值。 一、理解基本概念 状态 (State, S) 这是环境的…

Matlab数学建模实战应用:案例2 - 传染病传播

目录 前言 一、问题分析 二、模型建立 三、Matlab代码实现 四、模型验证 灵敏度分析 五、模型应用 实例总结 总结 前言 传染病传播模型是公共卫生和流行病学的重要研究内容&#xff0c;通过数学建模可以帮助我们理解传染病的传播规律和趋势&#xff0c;以便制定有效的…

【Python】使用OpenCV特征匹配检测图像中的【特定水印】

如果没有方向 往哪里走都是前方 做自己的光 不需要多亮 曾受过的伤 会长出翅膀 大雨冲刷过的天空会更加明亮 流过泪的眼睛也一样 做自己的光 悄悄的发亮 逆风的方向 更容易飞翔 世界怎样在于你凝视它的目光 那未曾谋面过的远方 或许就在身旁 &#x1f3b5…

设计软件有哪些?景观插件篇,渲染100邀请码1a12

建立大型景观也是设计师常用的设计方法&#xff0c;我们介绍一些景观插件。 1、AutoGrass AutoGrass是用于快速生成逼真的草地和植被场景的3ds Max插件&#xff0c;它提供了大量的草地预设和工具&#xff0c;使用户能够轻松地创建各种各样的草地效果&#xff0c;包括草地、草…

web 腾讯地图怎么设置卫星底图??

引用腾讯地图JavaScript SDK (腾讯地图引用文档) 设置卫星底图代码如下&#xff1a;官网示例 new TMap.Map("container", {// zoom: 16, //设置地图缩放级别zoom: 17.2, //设置地图缩放级别center: new TMap.LatLng(lat, long), //设置地图中心点坐标pitch: 35, //…