第5章-第1节-初识Java中的面向对象

1、面向对象和面向过程:

面向对象:(编程思想)

较晚出现

面向:看、关注、瞅

对象:个体、个例、实体、实例、结果

侧重点:关注结果

理解:将我们从劳动者变成了指挥者 ==> 解放程序员


面向过程:(编程思想)

较早出现

面向:看、关注、瞅

过程:前因后果、从头到尾

侧重点:关注从头到尾

理解:就是一个实实在在的劳动者


使用上述两种思想去解决生活中的一些现象

现象一:吃饭

使用面向过程的思想去解决吃饭的问题

具体步骤:
    1)、思考今天吃什么
    2)、去菜场买菜
    3)、挑菜(货比三家、针对性砍价)
    4)、付钱提菜走人
    5)、摘菜
    6)、洗菜
    7)、切菜
    8)、炒菜
    9)、焖饭
    10)、吃饭
    11)、洗刷

使用面向对象的思想去解决吃饭的问题

具体步骤:
    1)、思考今天吃什么
    2)、去饭店
       ①、使唤服务员,调用其点菜功能
       ②、服务员将所点菜品告知后方的大厨,大厨做菜ing...
       ③、大厨使唤服务员,调用其上菜功能
    3)、开始吃饭
    4)、结账(多种支付方式)


2、使用面向对象的思想进行场景演练

名词动词提炼法

场景一:大象装进冰箱

名词:大象、冰箱

动词:装

伪代码

具体步骤:

步骤一:设计类,花费大量时间

class 大象 {

}

class 猴子 {

}

class 冰箱 {
    开开( ) {
    
    }

    装(大象 dx) {
    
    }
    
    装(猴子 hz) {
    
    }

    关关( ) {
    
    }
}

步骤二:实例化/创建类的对象,代码很短,内存很复杂

大象 dx = new 大象( );
冰箱 bx = new 冰箱( );

步骤三:对象调用方法完成需求

bx.开开( );
bx.装(dx);
bx.关关( );


场景二:猫抓老鼠

名词:猫、老鼠

动词:抓

伪代码

具体步骤:

步骤一:设计类

class 猫 {
    看(老鼠 ls) {
        ls.看(this);
    }

    抓(老鼠 ls) {
        ls.逃();
    }

    吃(老鼠 ls) {
        ls.叫()
    }
}

class 老鼠 {
    看(猫 m) {
    
    }

    逃( ) {
    
    }

    叫( ) {
    
    }
}

步骤二:创建类的对象

猫 tom = new 猫( );
老鼠 jerry = new 老鼠( );

步骤三:对象调用方法完成需求

tom.看(jerry);
tom.抓(jerry);
tom.吃(jerry);


场景三:红色的车正在飞速的行驶,然后停了

名词:车

动词:行驶、停止

伪代码:

具体步骤:

步骤一:设计类

class 车 {
    //属性(成员变量)
    //描述事物的特征、特点
    字符串 颜色;
    字符串 品牌;
    字符串 车牌;
    浮点型 价格;

    //方法(成员方法)
    //描述事物的功能、行为
    行驶( ) {}
    停止( ) {}
}

步骤二:创建/实例化类的对象
//...

步骤三:对象访问类的成员(属性、方法)完成需求
//...


3、属性

又被称为:成员变量,属于类的成员之一

作用:用于描述某类事物的特征、特点    ==>    偏静的部分

注意:
    1)、方法也是属于类的成员之一 ==> 定义在类的成员位置
    2)、方法用于描述某类事物的功能、行为 ==> 偏动的部分


【问题1】:什么是成员变量?
答:定义在成员位置的变量就是成员变量

【问题2】:什么是成员位置?
答:直接定义在class的内部就是成员位置

【位置关系图】:
    class Xxx {
        //成员位置
        public ...( ) {
            
        }
        //成员位置
    }

定义格式:

两种情况:

情况一:声明同时初始化【使用较少】

模板:
    数据类型 属性名 = 属性值;

举例:
    double pi = 3.14;

情况二:先声明后初始化【使用较多】

模板:
    //环节一:在设计类的过程中仅仅声明定义属性,并不显示赋值
    数据类型 属性名;

    //环节二:在实例化对象完毕后,通过对象名.属性名的方式为对象属性进行显示赋值操作
    对象名.属性名 = 属性值;

举例:
    //人类
    class Person {
        //属性
        String name;
        int age;
    }

    //外部环境
    //创建Person对象
    Person p = new Person();
    //对象名.属性名 ==> 属性赋值
    p.name = "张三";
    p.age = 30;


4、第一个面向对象程序收获总结

1)、某个类设计的目的就是为了给别的类使用,自己不存在单独执行的情况,则其内部可以不定义main方法
   一旦某个类需要被执行,则其内部必须定义main方法
2)、如果有需要,类的内部可以创建多个对象,每个对象都有一份自己的属性,彼此独立、互不干扰

本电子书目录:《Java基础的重点知识点全集》

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

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

相关文章

开源音频处理代码 speex

Speex是一套主要针对语音的开源免费,无专利保护的音频压缩格式。 speex是近年来开发出的一套功能强大的语音引擎,能够实现高质量和低比特率的编码。它不仅提供了基于码激励线性预测(CELP)算法的编/解码模块,而且在其最…

使用SQL和Python处理Excel文件数据

目录 一、引言 二、使用SQL查询Excel文件数据 1、导入必要的库 2、创建数据库连接 3、读取Excel文件数据 4、将数据写入数据库 5、使用SQL查询数据 三、使用Python读取和处理Excel文件数据 1、导入必要的库 2、读取Excel文件数据 3、数据处理和分析 4. 将数据可视化…

ModuleNotFoundError: No module named ‘openai.error‘

ModuleNotFoundError: No module named ‘openai.error’ result self.fn(*self.args, **self.kwargs) File “H:\chatGPTWeb\chatgpt-on-wechat\channel\chat_channel.py”, line 168, in _handle reply self._generate_reply(context) File “H:\chatGPTWeb\chatgpt-on-wec…

【网络安全】—计算机网络基础

文章目录 网络必备基础物理层数据链路层与交换机网络模型OSI/TCP对等传输虚拟局域网VLAN静态路由与配置网络地址转换NAT访问控制列表ACLIP协议与IP地址分类子网掩码网关子网划分总结 计算机网络是指将地理位置不同的、功能独立的多台计算机通过通信线路连接起来,以功…

linux查看日志的几种方式

一、cat命令 1.使用cat命令:通过cat命令可以直接打开并显示文本文件内容,包括日志文件。例如,要查看名为logfile.txt的日志文件,可以运行以下命令:cat logfile.txt 常用命令:cat -n filename | grep “关键…

echarts地图map鼠标移入区域颜色(渐变)

鼠标移入透明 itemStyle下 emphasis属性 itemStyle: {// # 在未设置dataRange或 visualMap时设置有效normal: {// borderColor: rgba(12, 222, 255, 1),// borderWidth: 0.8,areaColor: {type: linear-gradient,x: 0,y: 300,x2: 0,y2: 0,colorStops: [{offset: 0,color: rg…

Unix进程间通信之简介-总体概述和引子

目录标题 0. 前言1. 概述2. 进程、线程与信息共享3. IPC对象的持续性4. 名字空间5. fork、exec和exit对IPC对象的影响6. 出错处理: 包裹函数7. Unix标准8. 小结 0. 前言 进程间通信这块是学习linux-c编程的关键, 这篇为后续进程间通信技术的引子篇&#…

jdk多版本切换环境变量管理(jdk1.8和jdk17)

jdk多版本切换环境变量管理(jdk1.8和jdk17) 看了很多网上的博客,根本都不行,我总结出来规律如下: 首先环境变量要配置成这个样子:这些博客都会教你们配 接着配什么classpath,看其他博客就行 还…

Gitee基础知识

目录 1-gitee 1.1gitee介绍 1.2git与gitee的关系 1.3在国内为什么选择Gitee 2-注册与创建远程仓库 2.1注册 2.2创建远程仓库 2.3配置ssh公钥 2.3.1公钥的生成方法: 2.3.2 在gitee中配置公钥 2.3.4验证公钥 3-添加与推送远程仓库master 3.1基本命令…

go mod indirect

在 Go 语言中,"indirect" 标记的 require 子句通常是由 Go 模块系统自动生成的,而不是手动维护的。 当一个模块直接依赖于另一个模块,而后者又依赖于第三个模块时,Go 模块系统会自动检测并生成 "indirect" 标…

【1.9计算机组成与体系结构】总线

目录 1.总线的定义2.总线的分类 1.总线的定义 √ 总线是一组能为多个部件分时共享的公共信息传送线路。 🔵 共享 🔵 分时:是指同一时刻仅允许一个部件向总线发送信息,但允许多个部件同时从总线上接收相同的信息。 √ 串行总线 (适合长距离传…

拾陆[16],不带校正描述匹配模板,函数CreateUncalibDescriptorModel/FindUncalibDescriptorModel

函数CreateUncalibDescriptorModel 函数功能 创建一个不带校正透视描述符匹配模板 C形式 LIntExport void CreateUncalibDescriptorModel( const HObject& Template, const HTuple& DetectorType, const HTuple& DetectorParamName, const HTuple& Dete…

软件开发模型(架构师复习资料)

在计算机刚刚诞生的年代,计算机是一种只有天才才能掌握的工具。人们对软件的认知仅仅停留在程序的层面上,所谓的软件开发就是那些能够掌握计算机的天才们写的一些只有计算机才能理解的二进制序列。但随着技术的发展,软件的复杂度不断提高&…

1.0 ROS 主环境安装 VS 虚拟环境安装

1. ROS 主环境安装 VS 虚拟环境安装 1.1主环境安装 直接安装:ROS Melodic Morenia通常直接安装在Ubuntu或Debian的主操作系统环境中。这种方法简单直接,且能保证ROS的所有功能都能正常工作。系统级别的改动:在主环境中安装会对整个系统产生…

《ThreadLocal使用与学习总结:2023-12-15》史上最详细由浅入深解析ThreadLocal

由浅入深全面解析ThreadLocal 目录 由浅入深全面解析ThreadLocal简介基本使用ThreadLocal与synchronized的区别ThreadLocal现在的设计(JDK1.8)ThreadLocal核心方法源码分析ThreadLocalMap源码分析弱引用与内存泄露(内存泄漏和弱引用没有直接关…

计算机网络:自顶向下第八版学习指南笔记和课后实验--网络层(控制平面)

网络层:控制平面 记录一些学习计算机网络:自顶向下的学习笔记和心得 Github地址,欢迎star ⭐️⭐️⭐️⭐️⭐️ 控制平面作为一种网络范围的逻辑,不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报,而且控制…

php中文乱码或html中文乱码

参考gpt 一、在PHP中解决中文乱码问题的常见方案有以下几种: 设置字符编码: 在你的PHP代码中,可以使用header函数设置正确的字符编码。常见的字符编码是UTF-8,可以使用以下代码将页面的字符编码设置为UTF-8: header(Co…

do{ __HAL_RCC_GPIOH_CLK_ENABLE(); }while(0);

使用STM32 HAL库,专门用于在STM32微控制器上启用GPIOH (GPIO端口H)时钟。在此代码片段中,宏__HAL_RCC_GPIOH_CLK_ENABLE()用于启用GPIOH的时钟。do-while(0)结构通常用作为宏定义创建单行代码块的技巧。以这种方式使用do-while(0)结构允许宏像函数调用一…

3.3 右值引用:移动语义与完美转发

一、移动语义的引入 1.浅拷贝带来的问题 对于存在资源(文件,指针)类型成员的类对象,在执行拷贝的时候存在资源管理的问题,这是浅拷贝导致的。 此时我们可以重写拷贝构造实现深拷贝,解决资源管理的问题。 但是有的时候拷贝并不…

python实现 Qlearning算法 完整的输入输出测试数据

Q-learning是一种强化学习算法,用于解决基于动作-奖励机制的问题。以下是一个简单的 Python 实现 Q-learning 算法的示例,以解决一个简单的迷宫问题。 import numpy as np# 创建迷宫示例,用数字表示迷宫状态 # 0表示可通行的空格&#xff0c…