黑马程序员——javase基础——day05——面向对象基础

目录:

  1. 面向对象
    1. 面向对象介绍
    2. 为什么要用面向对象编程
    3. 面向对象.重点学习什么?
  2. 类和对象
    1. 什么是类
    2. 什么是对象
    3. 对象的属性和行为
    4. 类的定义
    5. 对象的使用
    6. 学生类的定义和使用
  3. 对象内存图
    1. Java内存分配
    2. 单个对象
    3. 多个对象
    4. 思考:
    5. 多个引用指向相同
    6. 成员变量和局部变量的区别?
  4. private
    1. private关键字
  5. this
    1. this关键字
  6. 封装
    1. 封装概述
    2. 封装原则
    3. 封装好处
  7. 构造方法
    1. 构造方法概述
    2. 构造方法的注意事项
    3. JavaBean

1.面向对象

面向对象介绍
  • 并不是一个技术,而是一─种编程指导思想
  • 以什么形式组织代码;以什么思路解决问题
为什么要用面向对象编程
  • 因为生活中,我们解决问题时,就是采用这种指导思想去解决的。所以,我们写程序去解决问题时,如果也能采用这种指导思想就会使编程变得非常简单,程序也便于人理解

 

面向对象.重点学习什么?
  • 学习如何自己设计对象并使用
  • 学习获取已有对象并使用 

2.类和对象

什么是类
  • 类是对现实生活中一类具有共同属性和行为的事物的抽象
  • 我们可以将其理解为对象的设计图

 

什么是对象
  • 是能够看得到摸的着的真实存在的实体小结
  • 类是对象的抽象,对象是类的实体 

 

对象的属性和行为
  • 属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值
  • 行为:对象能够执行的操作 

 

类的定义
  • 类是什么:是对现实生活中一类具有共同属性和行为的事物的抽象,确定对象将会拥有的属性和行为
  • 类的组成:属性和行为
  • 属性:在类中通过成员变量来体现(类中方法外的变量)
  • 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可) 

 

 

对象的使用 

学生类的定义和使用
  • 需求:定义一个学生类,然后定义一个学生测试类,在学生测试类中通过对象完成成员变量和成员方法的使用 


3.对象内存图

Java内存分配

Java程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

 

  • 栈(虚拟机栈)
  • 堆 
  • 栈:所有局部变量都会在栈内存中创建
    • 局部变量:定义在方法中的变量或者方法声明上的变量
    • 方法执行都会加载到栈中进行
    • 局部变量特点:随着方法的调用而存在,随着方法的调用完毕而消失
    • 代码:Student s = new Student();
  • 堆:所有对象及其对应的实例变量和数组都将存储在此处
    • 简单理解为: new出来的东西,都存储在堆内存
    • 每一个new出来的东西都有一个地址值,使用完毕,会在垃圾回收器空闲时被回收
    • 实例变量(成员变量)有初始化值:
    • 基本数据类型:整数:0,浮点数:0.0,布尔: false,字符:空字符
    • 引用数据类型:null

 

单个对象

多个对象
思考:
  • 多个引用可以指向同—个对象吗?
  • 如果可以,通过其中—个引用改变数据了,其他引用访问的数据改变了吗?
多个引用指向相同 

成员变量和局部变量的区别?

4.private

private关键字
  • 是一个权限修饰符
  • 可以修饰成员(成员变量和成员方法)
  • 作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问
  • 针对private修饰的成员变量,如果需要被其他类使用,提供两个相应的操作:
  • 提供“get变量名0)”方法,用于获取成员变量的值,方法用public修饰
  • 提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰


5.this

this关键字
  • 1.this限定的变量用于指代成员变量
    • 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
    • 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量
  • 2.什么时候使用this呢?解决局部变量隐藏成员变量
  • 3.this:方法被哪个对象调用,this就代表哪个对象

 


6.封装

1.封装概述
  • 是面向对象三大特征之一(封装,继承,多态)
  • 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
2.封装原则
  • 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
  • 成员变量private,提供对应的getXxx()/setXxx()方法
3.封装好处
  • 通过方法来控制成员变量的操作,提高了代码的安全性
  • 把代码用方法进行封装,提高了代码的复用性

7.构造方法 

构造方法概述
  • 构造方法是一种特殊的方法.
  • 作用:创建对象

 

  •  功能:主要是完成对象数据的初始化

 

构造方法的注意事项
  • ①构造方法的创建
    • 如果没有定义构造方法,系统将给出一个默认的无参数构造方法
    • 如果定义了构造方法,系统将不再提供默认的构造方法
  • ②构造方法的重载
    • 如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法
  • ③推荐的使用方式
    • 永远提供无参数构造方法

JavaBean
  • 就是一个Java中的类,其对象可以用于在程序中封装数据
  • 举例:学生类,手机类
  • 标准JavaBean须满足如下要求:
    • 成员变量使用private修饰
    • 提供每一个成员变量对应的setXxx() / getXxx()
    • 提供一个无参构造方法 

手机JavaBean

  • 需求:编写手机 JavaBean,并在测试类中使用
  • 提示:手机有成员变量brand(品牌)和price(价格) 

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

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

相关文章

未来能源转型之路:2023年第十三届中国国际储能大会启示录

在2023年第十三届中国国际储能大会上,全球各地的能源专家、学者和企业代表齐聚一堂,共同探讨了储能技术在推动能源转型中的重要作用。对于我们普通人来说,从这场大会中可以学到什么呢? 一、储能技术是未来能源发展的关键 随着可再…

html+js网页连接MQTT服务器new Paho.MQTT.Client

网页完整代码示例 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible&quo…

YOLOv5改进 | 检测头篇 | 利用DynamicHead增加辅助检测头进行针对性检测(让小目标无所遁形)

一、本文介绍 本文给大家带来的改进机制是针对性的改进,针对于小目标检测增加P2层,利用DynamicHead(原版本一比一复现,全网独一份,不同于网上魔改版本)进行检测,其中我们增加P2层其拥有更高的分辨率,这使得模型能够更好地捕捉到小尺寸目标的细节。在这些的基础上配合Dyn…

基于springboot+vue的社区团购系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

人工智能 AI 如何让我们的生活更加便利

每个人都可以从新技术中获益&#xff0c;一想到工作或生活更为便利、简捷且拥有更多空余时间&#xff0c;谁会不为之高兴呢&#xff1f;借助人工智能&#xff0c;每天能够多一些空余时间&#xff0c;或丰富自己的业余生活&#xff0c;为培养日常兴趣爱好增添一点便利。从电子阅…

微信小程序(六)tabBar的使用

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1. 标签栏文字的内容以及默认与选中颜色 2. 标签栏图标的默认样式与选中样式 3. 标签选项路径页面 4.标签栏背景颜色 &#x1f43c;&#xff08;文末补充&#xff09;设置标签栏后为什么navigator标签无法跳转页面了 温…

【Dynamo学习笔记】Dynamo for Revit建模基础

目录 前言1 Revit模型的结构2 图元的操作2.1 图元的选择2.2 图元参数的读取和写入2.3 图元的创建2.3.2 创建轴网2.3.2 创建结构柱2.3.3 创建结构框架2.3.4 创建墙体 3 自定义节点 参考资料&#xff1a; &#xff08;1&#xff09; 罗嘉祥&#xff0c;宋姗&#xff0c;田宏钧. 《…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用相机日志跟踪功能(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用相机日志跟踪功能&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机NEOAPI SDK和短曝光功能的技术背景Baumer工业相机通过NEOAPI SDK使用相机日志跟踪功能1.引用合适的类文件2.通过NEOAPI SDK使用相机日志跟踪功能3.通…

burp靶场--ssrf

burp靶场–ssrf 1.什么是ssrf 服务器端请求伪造是一种 Web 安全漏洞&#xff0c;允许攻击者导致服务器端应用程序向非预期位置发出请求。 在典型的 SSRF 攻击中&#xff0c;攻击者可能会导致服务器连接到组织基础设施内的仅供内部使用的服务。在其他情况下&#xff0c;他们可…

python数字图像处理基础(七)——直方图均衡化、傅里叶变换

目录 直方图均衡化均衡化原理均衡化效果标准直方图均衡化自适应直方图均衡化 傅里叶变换原理低通滤波高通滤波 直方图均衡化 均衡化原理 图像均衡化是一种基本的图像处理技术&#xff0c;通过更新图像直方图的像素强度分布来调整图像的全局对比度。这样做可以使低对比度的区域…

Docker安装开源Blog(Typecho)

前言 首先这个镜像是centos7.9进行安装PHP环境&#xff0c;然后挂载目录去运行的&#xff0c;镜像大概300MB左右&#xff0c;没学过PHP&#xff0c;没办法给Dockerfile文件 参考文章&#xff1a;Docker安装Typecho | D-y Blog感知不强&#xff0c;图一乐https://www.wlul.top…

IntelliJ IDEA 拉取gitlab项目

一、准备好Gitlab服务器及项目 http://192.168.31.104/root/com.saas.swaggerdemogit 二、打开 IntelliJ IDEA安装插件 打开GitLab上的项目&#xff0c;输入项目地址 http://192.168.31.104/root/com.saas.swaggerdemogit 弹出输入登录用户名密码&#xff0c;完成。 操作Comm…

学习JavaEE的日子 day13 封装 static private this 类加载机制

Day13 1. private – 私有化 理解&#xff1a;private是访问修饰符的一种&#xff0c;访问修饰符规定了访问权限. 作用&#xff1a; ​ 1.private修饰属性&#xff1a;该属性只能在类的内部使用 ​ 2.private修饰方法&#xff1a;该方法只能在类的内部使用 应用场景&#xff1…

HBuilder X中uView UI框架的安装及使用

开发工具: HBuilder X 在最上方的工具中点击 插件安装 ——> 安装新插件 ——> 前往插件市场安装 在作者排行榜中找到 uView UI 选择该版本 然后点击下载并导入HBuilder X 然后选择你想导入的项目 在项目根目录中的main.js中&#xff0c;引入并使用uView的JS库&#xff…

《Linux C编程实战》笔记:出错处理

这一节书上把它放到线程这一章&#xff0c;按理说应该在前面就讲了 头文件errno.h定义了变量errno&#xff0c;它存储了错误发生时的错误码&#xff0c;通过错误码可以得到错误的信息 程序开始执行时&#xff0c;变量errno被初始化为0。很多库函数在执行过程中遇到错误时就会…

数字身份所有权:Web3时代用户数据的掌控权

随着Web3时代的来临&#xff0c;数字身份的概念正焕发出崭新的光芒。在这个数字化的时代&#xff0c;用户的个人数据变得愈加珍贵&#xff0c;而Web3则为用户带来了数字身份所有权的概念&#xff0c;重新定义了用户与个人数据之间的关系。本文将深入探讨Web3时代用户数据的掌控…

COCO数据集下载

目录 数据集介绍 方法一 方法二 数据集介绍 COCO&#xff08;Common Objects in Context&#xff09;数据集是一个广泛用于计算机视觉任务的大型图像数据集。它是由微软研究&#xff08;Microsoft Research&#xff09;创建的&#xff0c;旨在促进计算机视觉领域的研究和发展…

C++ STL ->priority_queue(优先级队列)

文章目录 priority_queue的使用priority_queue建小堆 priority_queue模拟实现emptysizetoppush仿函数 pop参考源码 优先级队列&#xff1a; priority_queue文档 优先队列是一种容器适配器&#xff0c;根据严格的弱排序标准&#xff0c;它的第一个元素总是它所包含的元素中最大的…

uni-app的组件(二)

多项选择器checkbox-group 多项选择器&#xff0c;内部由多个 checkbox 组成。 <checkbox-group><checkbox checked color"red" value"1"></checkbox> 篮球<!-- disabled:是否禁用 --><checkbox disabled color"rgba(0,0…

计算机系统基础知识揭秘:硬件、处理器和校验码

计算机系统基础知识揭秘&#xff1a;硬件、处理器和校验码 一、计算机系统基础知识的重要性二、计算机系统硬件2.1、内存和存储设备2.2、输入输出设备 三、中央处理器&#xff08;CPU&#xff09;3.1、运算器3.2、控制器3.3、寄存器组3.4、多核CPU 四、数据表示4.1、原码、反码…