面向对象基础

文章目录

  • 面向对象基础
    • 一.面向对象介绍
    • 二.设计对象并使用
    • 三.封装
    • 四.This关键字
    • 五.构造方法
    • 六.标准的Javabean类
    • 七.对象内存图
    • 八.基本数据类型和引用数据类型
    • 九.成员和局部

面向对象基础

一.面向对象介绍

面向:拿,找

对象:能干活的东西

面向对象编程:找东西来做对应的事情

重点:

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

二.设计对象并使用

类(设计图):是对象共同特征的描述

对象:是真实存在的具体东西

所以,在Java中,必须先设计类,才能获得对象

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

定义类的注意事项:

  • 用来描述一类事务的类,专业叫做Javabean类,Javabean类中是不写main方法的

  • 写main方法的类叫做测试类,在测试类中创建Javabean类的对象并使用

  • 类名首字母建议大写,需要见名知意,驼峰模式

  • 一个java文件中可以定义多个class类,且只能有一个类是public修饰,而且public修饰的类名必须成为代码文件名

  • 实际开发中,建议一个java文件中只定义一个class类

  • 成员变量的完整定义格式:修饰符 数据类型 变量名 = 初始化值; 一般无需指定初始化值,存在默认值

在这里插入图片描述

三.封装

面向对象三大特征:

  • 封装

  • 继承

  • 多态

封装的作用:告诉我们如何正确的设计对象的属性和行为

封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为

举一个例子:人画圆,这里有两个对象,一个是人对象,一个是圆对象

那么请问画圆的这个行为应该是人的还是圆的?

答案是:圆的

因为,半径数据是圆的属性,而画圆需要用到半径,所以,画圆的行为属于圆的

为了避免外界对 对象的属性进行不合理的操做,例如 a.age = -18;需要学习一个关键字:private

private:

  • 权限修饰符

  • 可以修饰成员(属性和行为)

  • 被private修饰的成员只能在本类中才能被访问

针对private修饰的成员变量,如果需要被其他类使用,提供

setXxx(参数)方法,用于给成员变量赋值,用public修饰

getXxx(参数)方法,用于获取成员变量的值,用public修饰

四.This关键字

成员变量:定义在方法的外面,类的里面

局部变量:定义在方法的里面

就近原则:谁离我近,我就用谁

在这里插入图片描述

作用:区分成员变量和局部变量

this.变量,代表的就是成员变量

this的内存原理:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

五.构造方法

作用:在创建对象的时候给成员变量进行赋值

格式:

在这里插入图片描述

特点:

  • 方法名和类名相同
  • 没有返回值类型,也没有void
  • 没有具体的返回值

分类:无参构造和全参构造

执行时机:

  • 在创建对象的时候,由虚拟机调用,不能手动调用
  • 每创建一次对象,就调用一次构造方法

注意事项:

  • 在定义方面:

    • 如果没有定义,默认给一个无参构造
    • 如果已经定义,以定义的为主
  • 构造方法的重载

    • 有参构造和无参构造,方法名相同,参数列表不同
  • 推崇的方式

    • 无论是否使用,有参构造和无参构造都要写上

六.标准的Javabean类

  • 类名需要见名知意
  • 成员变量使用private修饰
  • 提供至少两个构造方法
  • 成员方法,提供每一个成员变量对应的get/set方法,如果还有其他行为也要写上

七.对象内存图

每一款软件在运行的时候,都是需要占用一块内存区域的

java也不例外,在运行的时候,虚拟机也会占用一块内存空间,为了更好的利用这块内存,jvm将这块内存分为了5个部分
在这里插入图片描述

从JDK8开始,取消方法区,新增元空间,把原来方法区的多种功能进行划分,有的功能放到了堆中,有的功能放到了元空间中

在这里插入图片描述

但是叫什么无所谓,重要的是加载完了之后,代码该如何运行,暂时还叫方法区

当运行一个类的时候,这个类的字节码文件就会加载到方法区当中临时存储

在这里插入图片描述

一个对象的内存图:

在这里插入图片描述

在创建这个类的对象时,内存至少做以下七件事

1.加载class文件

2.申明局部变量

3.在堆内存中开辟一个空间

4.默认初始化

5.显示初始化

6.构造方法初始化

7.将堆内存中的地址值赋值给左边的局部变量

在这里插入图片描述

两个对象的内存图:

在这里插入图片描述

两个引用指向同一个对象:

在这里插入图片描述

八.基本数据类型和引用数据类型

从内存的角度解释:

基本数据类型:

数据值是存储在自己的空间中

特点:

赋值给其他变量,赋值的是真实的数据值

在这里插入图片描述

引用数据类型:

数据值存储在其他空间中,自己空间中存储的是地址值

特点:

赋值给其他变量,赋值的是地址值

在这里插入图片描述

九.成员和局部

在这里插入图片描述

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

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

相关文章

面试2:通用能力

15丨如何做好开场:给自我介绍加“特效 第一层,满足面试官对信息的期待 这是对自我介绍的基本要求,把个人信息、主要经历、经验和技能有条理地组织起来, 有逻辑地讲出来。需要找出多段经历的关联性和发展变化,形成连…

两个路由器如何连接设置的方法攻略

一、前言 随着智能家居时代来临,家里的网络部署需求开始复杂起来。往往一个路由器已经不能满足需求或者不利于拓展。两个路由器连接最常见的情况是家中已有一个路由器,并且已经通过这个路由器来正常上网。现在是因某些原因想在不改变已经在用的路由器的设…

将本地jar打包到本地maven仓库或maven私服仓库中

将本地jar包打包到本地的maven仓库中的命令&#xff1a; mvn install:install-file -DgroupIdtebie.applib.api -DartifactIdapiclient -Dversion1.0-SNAPSHOT -Dfile本地jar路径 -Dpackagingjar说明&#xff1a; DgroupId pom中的<groupId></groupId> Dartifact…

[git]分支操作

Checkout 相当于切换到该分支&#xff0c;但是因为不能直接操作远程分支&#xff0c;会在本地同步一个完全一样的分支。 注意&#xff1a;切换分支前本地先进行提交&#xff08;addcommit&#xff09;&#xff0c;否则有可能代码会丢失。 New Branch from Selected... 创建一…

Websocket、SessionCookie、前端基础知识

目录 1.Websocket Websocket与HTTP的介绍 不同使用场景 Websocket链接过程 2.Session&Cookie Cookie的工作原理 Session的工作原理 区别 3.前端基础知识 1.Websocket Websocket与HTTP的介绍 HTTP&#xff1a; 1.HTTP是单向的&#xff0c;客户端发送请求&#xff0…

Middleware ❀ Kafka功能与使用详解

文章目录 1. 概述1.1. 消息队列1.2. 应用场景1.3. 工作模式1.4. 基础结构1.4.1. 结构组件1.4.2. 数据同步1.4.3. ACK机制1.4.4. 分区机制1.4.4.1. 使用Partition Key写入1.4.4.2. 轮询写入 - 默认规则1.4.4.3. 指定Partition写入 1.4.5. Offset偏移量1.4.5.1. 消息顺序性1.4.5.…

macOS通过钥匙串访问找回WiFi密码的详细教程

如果您忘记了Mac电脑上的WiFi密码&#xff0c;可以通过钥匙串访问来找回它。具体步骤如下&#xff1a; 1.打开Mac电脑的“启动台”&#xff0c;然后在其他文件中找到“钥匙串访问”。 2.运行“钥匙串访问”应用程序&#xff0c;点击左侧的“系统”&#xff0c;然后在右侧找到…

R语言应用interactionR包进行亚组相加交互作用分析

在统计分析中交互作用是指某因素的作用随其他因素水平变化而变化&#xff0c;两因素共同作用不等于两因素单独作用之和(相加交互作用)或之积(相乘交互作用)。相互作用的评估是尺度相关的&#xff1a;乘法或加法。乘法尺度上的相互作用意味着两次暴露的综合效应大于&#xff08;…

023-从零搭建微服务-推送服务(三)

原【短信服务】更名【推送服务】 写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;https://gitee.com/csps/mingyue 源码地址&#xff08;前端&#xff09;&a…

地理测绘基础知识(5) 照射计算下篇

在上一篇中&#xff0c;我们解决了照射计算的基本模型关系&#xff0c;并能够根据手电的位置指向&#xff0c;在地表求取光斑。但是&#xff0c;前文使用的是设置探针求取场强的点求取&#xff0c;对于绘制地表的等值线包络图、求取地表包线的具体解析情况&#xff0c;就不够用…

Vulnstack----5、ATTCK红队评估实战靶场五

文章目录 一 环境搭建二 外网渗透三 内网信息收集3.1 本机信息收集3.2 域内信息收集 四 横向移动4.1 路由转发和代理通道4.2 抓取域用户密码4.3 使用Psexec登录域控4.4 3389远程登录 五、痕迹清理 一 环境搭建 1、项目地址 http://vulnstack.qiyuanxuetang.net/vuln/detail/7/ …

MySQL——MySQL的基础操作部分

使用命令行登录 mysql -u root -p 直接敲击回车后输入密码即可&#xff1a; 当看到出现“mysql>“的符号之后&#xff0c;就表示已经进入到了&#xff2d;&#xff59;&#xff33;&#xff31;&#xff2c;系统中&#xff0c;就可以输入&#xff2d;&#xff59;&#xf…

虚拟机(三)VMware Workstation 桥接模式下无法上网

目录 一、背景二、解决方式方式一&#xff1a;关闭防火墙方式二&#xff1a;查看桥接模式下的物理网卡是否对应正确方式三&#xff1a;查看物理主机的网络属性 一、背景 今天在使用 VMware Workstation 里面安装的 Windows 虚拟机的时候&#xff0c;发现虽然在 NAT 模式下可以…

【Electron将HTML项目打包成桌面应用exe文件】

目标&#xff1a;前端将静态页面文件夹所有页面打包成一个exe文件&#xff08;不包含其它文件&#xff09;可运行。 步骤 1、初始化 npm init此时项目多出一个package.json文件。 {"name": "my-electron-app","version": "1.0.0",…

动态规划:路径和子数组问题(C++)

动态规划&#xff1a;路径和子数组问题 路径问题1.不同路径&#xff08;中等&#xff09;2.不同路径II&#xff08;中等&#xff09;3.下降路径最⼩和&#xff08;中等&#xff09;4.地下城游戏&#xff08;困难&#xff09; 子数组问题1.最大子数组和&#xff08;中等&#xf…

目标检测框架MMDetection训练自定义数据集实验记录

在上一篇博文中&#xff0c;博主完成了MMDetection框架的环境部署与推理过程&#xff0c;下面进行该框架的训练过程&#xff0c;训练的入口文件为tools/train.py&#xff0c;我们需要配置的内容如下&#xff1a; parser.add_argument(--config,default"/home/ubuntu/prog…

RuntimeError: ANTLR version mismatch

规则引擎源码&#xff1a; nemonik/Intellect: DSL and Rules Engine For Python (github.com) 运行程序 Example.py 时报错&#xff1a; RuntimeError: ANTLR version mismatch: The recognizer has been generated with API V0, but this runtime does not support this. …

vue+elementUI el-table实现单选

if (selection.length > 1) {this.$refs.table.clearSelection();this.$refs.table.toggleRowSelection(selection.pop());}

14.Redis 主从复制

Redis 主从复制 redis 主从复制配置 redis 主从复制启动 redis 主从复制断开 redis 主从复制主从复制构特点主从复制的拓扑结构一主一从⼀主多从树状主从 主从复制原理数据同步psync 运行流程全量复制流程部分复制流程实时复制 关于从节点何时晋升成主节点总结 redis 主从复制 …

动手学深度学习(四)多层感知机

目录 一、多层感知机的从零开始实现 1.1 初始化模型参数 1.2 实现Relu函数 1.3 实现模型 1.4 训练 二、多层感知机的简洁实现 2.1 实现模型 2.2 训练 三、模型选择 3.1 训练误差和泛化误差 3.2 验证数据集和测试数据集 3.3 过拟合和欠拟合 3.4 代码实现 3.4.1 生…