JavaSE基础(六)—— 面向对象、封装、对象内存图、成员变量和局部变量区别

news2024/11/24 18:37:56

目录

一、面向对象对象介绍

1. 面向对象的重点学习什么

二、设计对象并使用

1. 设计类,创建对象并使用

1.1 如何得到对象

1.2 如何使用对象

2. 定义类的几个补充注意事项

2.1 对象的成员变量的默认值规则

三、对象内存图

1. 多个对象内存图

2. 两个变量指向同一个对象内存图

3. 垃圾回收

四、面向对象编程训练

1. 考试系统模拟-设计对象

2. 考试系统模拟-功能实现

3. 购车系统模拟-设计对象

4. 购车系统模拟-功能实现

五、构造器

1. 构造器的作用

2.构造器的定义格式

3.构造器的分类

3.1 注意事项

六、this关键字

七、封装

1. 封装的实现步骤

2. 封装的好处小结

八、标准 JavaBean

1. 标准JavaBean须满足如下要求

九、使用标准JavaBean改造面向对象案例

十、补充知识:成员变量、局部变量区别


一、面向对象对象介绍

  • 并不是一个技术,而是一种编程指导思想。
  • 把现实世界的具体事物全部看成一个一个的对象来解决问题。

为什么要用面向对象编程?

生活中我们解决问题就是按照对象化的方式进行的。如果程序也能够按照生活的中的方式来解决问题,那么程序就更符合人类的思维习惯,代码看起来会更易理解、更简

1. 面向对象的重点学习什么

  • 学习获取已有对象并使用
  • 学习如何自己设计对象并使用

二、设计对象并使用

1. 设计类,创建对象并使用

在Java中,必须先设计类,才能获得对象。
类(设计图):是对象共同特征的描述; 对象:是真实存在的具体实例。

1.1 如何得到对象

public class 类名 {
    1、成员变量(代表属性的,一般是名词)
    2、成员方法(代表行为的,一般是动词)
}

类名 对象名 = new 类名();

1.2 如何使用对象

对象.成员变量;
对象.成员方法(…)

2. 定义类的几个补充注意事项

  • 成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值; 一般无需指定初始化值,存在默认值。
  • 类名首字母建议大写,且有意义,满足“驼峰模式”。
  • 一个Java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。
  • 实际开发中建议还是一个文件定义一个class类

2.1 对象的成员变量的默认值规则

三、对象内存图

1. 多个对象内存图

对象放在哪个位置?
        堆内存中
Car c = new Car(); c变量名中存储的是什么?
        存储的是对象在堆内存中的地址。
成员变量(name、price)的数据放在哪里,存在于哪个位置?
        对象中,存在于堆内存中。

2. 两个变量指向同一个对象内存图

3. 垃圾回收

  • 注意:当堆内存中的类对象数组对象,没有被任何变量引用(指向)时,就会被判定为内存中的“垃圾”。
  • Java存在自动垃圾回收器,会定期进行清理。

四、面向对象编程训练

1. 考试系统模拟-设计对象

需求:使用面向对象编程模拟考试系统,可以实现学生考试,老师批阅试卷操作并打分出来。
分析:

  • 设计老师类(属性:名称、年龄、性别、行为:出题、批阅试卷)
  • 设计试卷类(属性:模拟包含学生答案,正确答案即可)
  • 设计学生类 (属性:学生名称、班级名称、行为:答卷)

2. 考试系统模拟-功能实现

需求:实现一个老师,分发三张试卷,给3个学生进行考试,最终输出每个学生的考试结果。
分析:

  • 创建一个老师对象
  • 调用老师对象的出题方法,依次得到3份试卷对象
  • 创建3个学生对象
  • 调用3个学生对象的考试方法并同时传入试卷对象
  • 调用老师对象的批阅方法并传入试卷对象,输出考试的结果

3. 购车系统模拟-设计对象

需求:使用面向对象编程模拟购车,可以实现客户对象掏钱,销售对象交车功能。
分析:

  • 设计客户类(属性:名称、性别、电话 行为:掏钱、取车)
  • 设计钱类(余额、支付者)
  • 设计销售类(属性:名称、性别、电话 行为:卖车)
  • 设计汽车类 (属性:名称、价格)

4. 购车系统模拟-功能实现

需求:实现一个客户掏钱给销售,买一部车。
分析:

  • 创建一个客户对象。
  • 调用客户对象的掏钱功能,得到钱对象。
  • 创建一个销售对象。
  • 调用销售对象的卖车功能同时注入钱对象,得到返回的车对象。
  • 调用客户对象的取车功能同时注入车对象。

五、构造器

1. 构造器的作用

用于初始化一个类的对象,并返回对象的地址。

2.构造器的定义格式

3.构造器的分类

  • 无参数构造器(默认存在的):初始化的对象时,成员变量的数据均采用默认值。
  • 有参数构造器:在初始化对象的时候,同时可以为对象进行赋值。

3.1 注意事项

  • 任何类定义出来,默认就自带了无参数构造器,写不写都有。
  • 一旦定义了有参数构造器,无参数构造器就没有了,此时就需要自己写一个无参数构造器了。

六、this关键字

作用:出现在成员方法、构造器中代表当前对象的地址,用于访问当前对象的成员变量、成员方法。

七、封装

  • 面向对象的三大特征: 封装,继承,多态
  • 什么是封装? 隐藏实现细节,暴露出合适的访问方式。(合理隐藏、合理暴露

1. 封装的实现步骤

  • 一般对成员变量使用private(私有)关键字修饰进行隐藏,private修饰后该成员变量就只能在当前类中访问。
  • 提供public修饰的公开的getter、setter方法暴露其取值和赋值。

2. 封装的好处小结

  • 加强了程序代码的安全性。
  • 适当的封装可以提升开发效率,同时可以让程序更容易理解与维护。
     

八、标准 JavaBean

JavaBean:也可以理解成实体类,其对象可以用于在程序中封装数据。

1. 标准JavaBean须满足如下要求

  • 成员变量使用 private 修饰
  • 提供每一个成员变量对应的 setXxx() / getXxx()
  • 必须提供一个无参构造器
     

九、使用标准JavaBean改造面向对象案例

十、补充知识:成员变量、局部变量区别

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

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

相关文章

Springboot +Flowable,流程表单应用之静态表单

一.简介 整体上来说,我们可以将Flowable 的表单分为三种不同的类型: 动态表单 这种表单定义方式我们可以配置表单中每一个字段的可读性、可写性、是否必填等信息,不过不能定义完整的表单页面。外置表单 外置表单我们只需要定义一下表单的 k…

生命周期、数据共享、ref引用、购物车案例

生命周期&数据共享 1.组件的生命周期2.组件之间的数据共享3.ref 引用4.购物车案例 1.组件的生命周期 生命周期 & 生命周期函数 生命周期(Life Cycle)是指一个组件从创建 -> 运行 -> 销毁的整个阶段,强调的是一个时间段。 生命…

chatGPT提问,BGP内容

ChatGPT提问:提问框架 背景角色任务要求 动态路由:内部网关协议:如RIP ISIS OSPF 在同一个公司内部运行的路由协议 外部网关协议:如 BGP 在不同公司之间运行的路由协议 AS:自治系统 每个自治系统都有唯一的…

动态组件、插槽、自定义指令、Eslint和prettierrc配置、axios全局挂载

动态组件、插槽、自定义指令、Eslint和prettierrc配置、axios全局挂载 动态组件插槽体验插槽的基础用法作用域插槽 自定义指令Eslint和prettierrc配置prettierrc axios全局挂载 动态组件 动态组件指的是动态切换组件的显示与隐藏。 如何实现动态组件渲染 vue 提供了一个内置的…

Visual Studio 2022 CMake+MinGW+GDB 调试目标程序

前段时间笔者在使用MinGW编译了QtCreator后,想要进行调试。最开始使用VSCode进行调试,可是可以调试,但是发现调试过程中反应比较慢,毕竟QtCreator整个源代码工程还是非常大的,VSCode是由JS语言编写,执行效率…

Golang每日一练(leetDay0065) 位1的个数、词频统计

目录 191. 位1的个数 Nnumber of 1-bits 🌟 192. 统计词频 Word Frequency 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 191. 位1的个数 Nnum…

Java面试知识点(全)-JVM面试知识点一

[Java面试知识点(全) 导航: https://nanxiang.blog.csdn.net/article/details/130640392 注:随时更新 SQL优化 r m y s q l q u e r y ( " S E L E C T u s e r n a m e F R O M u s e r W H E R E s i g n u p d a t e > ′ r mysql_query(…

RK3568平台开发系列讲解(网络篇)图解linux ping

🚀返回专栏总目录 文章目录 一、SOCK_RAW套接字实现的ping二、ping命令发送端内核实现三、ping命令接收端内核实现沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 ping 命令采用 ICMP 协议,是一个用户空间程序,它打开一个 SOCK_RAW 套接字或者ICMP套接字发送ICMP_…

Chrome启动参数常用参数

Chrome常用参数请参考下表。 序号 参数 说明 1 --allow-outdated-plugins 不停用过期的插件。 2 --allow-running-insecure-content 默认情况下,https 页面不允许从 http 链接引用 javascript/css/plug-ins。添加这一参数会放行这些内容。 3 …

Python爬虫入门教程,BeautifulSoup基本使用及实践

Python爬虫入门教程,BeautifulSoup基本使用及实践 爬虫,是学习Python的一个有用的分支,互联网时代,信息浩瀚如海,如果能够便捷的获取有用的信息,我们便有可能领先一步,而爬虫正是这样的一个工具…

大数据之PySpark的RDD创建和分区

文章目录 前言一、RDD创建二、RDD分区数总结 前言 #博学谷IT学习技术支持# 上篇文章对PySpark的RDD做了简单的介绍,以及总结了RDD的特性,该篇文章主要介绍RDD的创建方式,PySpark的RDD创建方式主要有两种,一种是在程序中直接创建&…

11 dubbo源码学习_dubbo协议通信

dubbo在通信上也支持非常多的网络协议,而dubbo协议属于dubbo框架自研,整体协议也比较有代表性,采用定长协议头+变长协议休的形式; 1. dubbo协议格式 Magic - Magic High & Magic Low (16 bits)标识协议版本号,Dubbo 协议:0xdabbReq/Res (1 bit)标识是请求或响应。请…

「OceanBase 4.1 体验」|OCP Express

文章目录 一、简介二、特性介绍2.1 数据库管理2.2 数据库可观测性 一、简介 OCP Express 是一个基于 Web 的 OceanBase 4.x 轻量化管理工具,作为 OceanBase 数据库的工具组件,它集成在 OceanBase 数据库集群中,支持数据库集群关键性能指标查看…

MyBatis第一章 搭建MyBatis的运行环境

这里写自定义目录标题 一 创建Maven工程1 打包方式设置为jar2 引入依赖进去 二 创建MyBatis的核心配置文件1 配置核心文件2 创建mapper接口3 创建mabatis的映射文件4 测试文件的写法5 需要代码可以访问gitee仓库去看看6 log4j的日志功能 三 先改方法,后改映射文件1 …

Qt开发笔记(Qt5.9.9下载安装环境搭建win10)

#1 Qt下载网站(国内、国外镜像) #2 Qt5.9.9安装选项 #3 配置系统环境变量 #4 创建测试项目 #1 Qt下载网站(国内、国外镜像) 官方下载地址(慢):http://download.qt.io/ 国内镜像网站 这里给大家…

私有jar包发布到maven中央仓库

一、注册Jira Sonatype JIRAhttps://issues.sonatype.org/secure/Dashboard.jspa 二、新建issue 提交后,等待5-10分钟,会收到中央机器人的评论,如下: 在这里,我没有自己的域名,此时: 1、机器人…

网络编程 lesson2 TCP基础编程

目录 sockt介绍 socket类型 socket所在位置 端口号(重点) 端口号作用 端口号范围 字节序(面试常见) 大端序 小端序 验证当前主机字节序 字节序转换和IP转换函数接口(常用) TCP编程 函数接口 …

[230517] TPO71 | 2022年托福阅读真题第5/36篇 | Minoan Palaces | 14:51~16:00+22:00~23:20

7102 Minoan Palaces 目录 7102 Minoan Palaces 正文 题目 Paragraph 1 问题 1 Paragraph 2 问题 2 Paragraph 3 问题 3 4 Paragraph 4 问题 5 6 Paragraph 5 问题 7 8 Paragraph 2-问题9 全篇-问题10 正确率:7/10 正文 Paragraph 1 The…

JavaScript实现输入指定行数,输出三角形的代码

以下为实现输入指定行数,输出三角形的程序代码和运行截图 目录 前言 一、实现输入指定行数,输出三角形 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择,您可以在目录里进行快速查找;…

HCIP周日ISIS

ISIS:中间系统到中间系统 ES:终端系统 ES-IS:终端系统到中间系统 ISIS是一种链路状态协议,使用SPF算法 早期的ISIS是基于CLNP(无连接网络协议)而开发的,为了继续追逐TCP/IP的发展&#xff0…