详解面向对象-类和对象

1.面向对象与面向过程的区别

①面向过程 :关注点是在实现功能的步骤上面,就是分析出解决问题所需要的步骤,让后函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以。对于简单的流程是适合面向过程的方式进行的,复杂的流程不适合使用面向过程方式开发的。

②面向过程:关注点是在实现功能需要哪些对象参与。人类就是分析出解决问题都需要那些对象的参加,然后让对象与对象之间协作起来形成一个系统。面向对象开发方式耦合度低,扩展能力强。

2.类与对象

什么是类?

在我们现实生活中,事物与实物之间具有共同特征。比如张三和李四这个人都有父母,有身份证号,有房子车子票子,有体重有身高,还有,他们都可以吃,可以喝,可以跑这些行为。

那么,我们将这些东西(共同的状态和行为)抽取出来,形成一个模板,这个就是类。比如张三和李四抽取出一个人这个类。

这样,我们就可以看出,类实际上就是人的大脑思考总结出来的一个模板,类是一个抽象的概念。那么当中的状态被称为属性。属性通常用变量来表示。行为在程序中对应方法,用来描述行为动作。

所以,我们可以总结出:类=行为+方法。

什么是对象?

就是实际存在的个体,就比如我们上面提到的张三和李四。对象有称为实例。我们通过类这个模板可以实例化n个对象。(通过类可以创建多个对象)。就比如说,我们通过人这个类可以创建“张三”和“李四”对象。在人这个类中有一个属性名字 String name,"张三对象"和“李四”对象也有name属性,只是值不同,我们就称作这样的属性为实例变量。

 

3.类的定义

定义类的格式:

[修饰符列表] class 类名{类体=属性+方法;//属性(就是实例变量),他描述的是状态//方法(就是实例方法),他描述的是行为动作
}

为什么要定义类?

因为我们要通过类去实例化对象。有了对象,让对象和对象之间协作起来形成系统。

public class student {//属性:姓名,年龄,性别,他们都是实例变量//姓名String name;//语文成绩double chinese;//英语成绩double english;//数学成绩double math;
}

注意:实例变量是一个对象一份,比如我们创建了三个学生,每个学生都应该有name。

那么我们如何去实例化对象,访问对象的属性呢?

我们用一个案例来说明一下。

首先:我们 定义一个电脑类

package com.web.quictstart.computer;public class Computer {String name;//电脑名字double price;//价格String brand;//品牌
}

然后,我们可以实例化电脑对象

package com.web.quictstart.computer;public class ComputerTest1 {public static void main(String[] args) {//通过电脑类Computer实例化对象(通过类创建对象)Computer computer = new Computer();//访问对象的属性System.out.println(computer.name);System.out.println(computer.brand);System.out.println(computer.price);//修改对象的属性,修改变量的值,给变量重新赋值computer.name = "华硕第二代";computer.brand = "华硕";computer.price = 15999;//访问修改后的属性System.out.println(computer.name);System.out.println(computer.brand);System.out.println(computer.price);//我们还可以继续创建对象Computer computer1 = new Computer();computer1.name = "戴尔";computer1.brand = "戴尔";computer1.price = 12999;//访问对象属性System.out.println(computer1.name);System.out.println(computer1.brand);System.out.println(computer1.price);}
}

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

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

相关文章

C++:set和map的介绍

目录 关联式容器 键值对 set介绍: set的模板参数列表 set的双向迭代器: insert的使用和set的特性: set的删除: set的find: lower_bound 、 upper_bound: multiset: map介绍&#xff…

解决windows中的WSL Ubuntu子系统忘记root密码和用户密码问题

1、以管理员身份运行PowerShell 2、在powershell中执行wsl.exe --user root wsl.exe --user root如果出现了上面的报错,则需要运行步骤3、4,然后在执行步骤5改密码,如果没有出错,请直接跳到第5步改密码操作!&#xff…

第11章 软件工程

这里写目录标题 1.软件过程1.1能力成熟度模型(CMM)1.2能力成熟度模型集成(CMMI)1.3瀑布模型(线性顺序)1.4增量模型1.5演化模型1.5.1原型模型1.5.2螺旋模型 1.6喷泉模型1.7统一过程(UP)模型 2.敏捷方法3.系统设计4.系统测试4.1单元测试(模块测试)4.2集成测试4.3黑盒测试(功能测试…

HNU-人工智能-实验1-A*算法

人工智能-实验1 计科210x 甘晴void 一、实验目的 掌握有信息搜索策略的算法思想; 能够编程实现搜索算法; 应用A*搜索算法求解罗马尼亚问题。 二、实验平台 课程实训平台https://www.educoder.net/shixuns/vgmzcukh/challenges 三、实验内容 3.…

如何将数据导入python

Python导入数据的三种方式: 1、通过标准的Python库导入CSV文件 Python提供了一个标准的类库CSV文件。这个类库中的reader()函数用来导入CSV文件。当CSV文件被读入后,可以利用这些数据生成一个NumPy数组,用来训练算法模型。 from csv import…

详细介绍如何使用YOLOv9 在医疗数据集上进行实例分割-含源码+数据集下载

深度学习彻底改变了医学图像分析。通过识别医学图像中的复杂模式,它可以帮助我们解释有关生物系统的重要见解。因此,如果您希望利用深度学习进行医疗诊断,本文可以成为在医疗数据集上微调YOLOv9 实例分割的良好起点。 实例分割模型不是简单地将区域分类为属于特定细胞类型,…

基于Springboot的校园竞赛管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园竞赛管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

stl容器 string类的基本操作

目录 一.string类的构造 二.string类的输出 1.传统字符串输出 2.通过迭代器进行输出 ​编辑 3.C11标准的范围for输出加auto推导类型 三.string类的各种迭代器 begin()和end() 利用迭代器遍历输出 利用迭代器修改字符串的字符 rbgin()和rend() 利用迭代器遍…

创造价值与回报:创业者的思维格局与商业智慧

在纷繁复杂的商业世界中,有一种信念始终贯穿于无数创业者的心中——那就是创造价值。张磊的这句“只要不断地创造价值,迟早会有回报”道出了创业者的核心思维格局和商业智慧。本文将从创业者的角度,探讨创造价值的重要性,以及如何…

5.Spring Security-web权限方案

设置登录的用户名和密码 1.通过配置文件设置用户名密码 spring:security:user:name: xiankejinpassword: 123456 如果没有以上配置,那么就会在后台生成一个随机密码,用户名固定位user。 2.通过配置类设置用户名密码 Configuration public class Sec…

为什么说虚拟化技术是现代网络安全的重要组成部分?

虚拟化技术是一种对计算机资源的抽象和资源管理技术,将电脑的各种实体资源(CPU、内存、磁盘空间、网络适配器等)予以抽象、转换后呈现出来,并可供分割、组合为一个或多个电脑配置环境。今天德迅云安全带您了解为什么虚拟化技术能成…

翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一

合集 ChatGPT 通过图形化的方式来理解 Transformer 架构 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深…

基于AT89C51单片机的温度上下限自动控制检报警设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/89247694?spm=1001.2014.3001.5501 C 源码+仿真图+毕业设计+实物制作步骤+06 题 目 基于单片机的温度检测调节系统设计 姓 名 学 号 专业班级 指导教师 年 月 日 任务书 …

在Mac OS系统下查看CPU型号以及核心数量

1. 基础信息 一般点开mac的关于本机,显示的是下面的信息: 2. 当前电脑的处理器型号 找到并打开终端输入下面命令: sysctl machdep.cpu.brand_string结果如下图: 3. 当前处理器物理核心数量 找到并打开终端输入下面命令&am…

有没有适合制造企业用的研发项目管理软件?制造业选型案例必看!“追觅”上线奥博思项目管理软件,加速项目交付

智能清洁家电赛道的领军者:追觅科技(苏州)有限公司(以下简称“追觅”)成功上线奥博思 PowerProject 数字化项目管理系统。通过 PowerProject 系统,追觅公司能够实现项目全流程的覆盖,从预研阶段…

【电源专题】拿人体的循环系统与板级电源做个比较

一般人可能会觉得电源大概是电子设备里面比较容易搞定的门类。因为,只要线路没有接错,指示灯(如果有)能亮,电源都能工作。从这个方面说,好像是很容易。但是通过多年的经验和经历的坑,发现电源其实是一个很麻烦的东西,稍微有一点不完美就会有大问题出现。 如果将人体也当…

ue引擎游戏开发笔记(30)——对角色移动进行优化:实现人物转向

1.需求分析: 当前我们只实现了通过控制器可使角色进行前后左右的移动,但角色移动时与动画不匹配,并不会进行转向,实现角色随移动转向。 2.操作实现: 1思路:利用反转换函数inverse transform direction获取…

【busybox记录】【shell指令】md5sum

目录 内容来源: 【GUN】【md5sum】指令介绍 【busybox】【md5sum】指令介绍 【linux】【md5sum】指令介绍 使用示例: 128位MD5 - 默认输出 128位MD5 - 将每个文件当做二进制处理 128位MD5 - 从文件中读取MD5值并做检查 128位MD5 - 创建一个BSD风…

李廉洋:5.5-5.6现货黄金,WTI原油必看分析及策略。

美联储2024年5月议息会议将联邦基金利率的目标区间维持在5.25%-5.5%。本次会议声明发生较大变化,宣布6月开始放缓缩表。鲍威尔讲话总体中性偏鸽,指出美联储的下一步行动不太可能是加息。中信证券认为在美国失业率升至4%以上之前,美联储政策重…

【iOS】KVC

文章目录 前言一、KVC常用方法二、key与keypath区别key用法keypath用法 三、批量存值操作四、字典与模型相互转化五、KVC底层原理KVC设值底层原理KVC取值底层原理 前言 KVC的全称是Key-Value Coding,翻译成中文叫做键值编码 KVC提供了一种间接访问属性方法或成员变…