day10_面向对象基础
今日内容
零、 复习昨日
一、面向对象的概念
二、面向对象编程
三、内存图



零、 复习昨日
见晨考题
每日一数组题
写一个方法 用于合并两个int类型的数组 合并法则如下
{1,2,5,8,9}{1,3,0}---->{1,2,5,8,9,1,3,0}
package com.qf.array;import java.util.Arrays;/*** --- 天道酬勤 ---** @author QiuShiju* @desc*/
public class Homework {/*** 写一个方法 用于合并两个int类型的数组 合并法则如下* {1,2,5,8,9}{1,3,0}---->{1,2,5,8,9,1,3,0}*/public static void main(String[] args) {concat();}// 合并public static void concat() {int[] arr1 = {1,2,5,8,9};int[] arr2 = {1,3,0};// 创建新数组int[] arr3 = new int[arr1.length + arr2.length];System.out.println(Arrays.toString(arr3 ) );// 手动拷贝// for (int i = 0; i < arr3.length; i++) {//// if(i < arr1.length) {// // 取出arr1中的元素// arr3[i] = arr1[i];// } else {// arr3[i] = arr2[i - arr1.length];// }// }// 工具拷贝System.arraycopy(arr1,0,arr3,0,arr1.length);System.arraycopy(arr2,0,arr3,arr1.length,arr2.length);System.out.println(Arrays.toString(arr3 ) );}
}
一、面向对象的概念
Java是一门面向对象的编程语言.
补充: c语言面向过程 c++ 半面向对象半面向过程
面向过程编程
开发过程中的所有细节都要编写.
假设: 使用一台电脑敲代码. 其中所有零件都需要自己去造.
面向对象编程
假设: 使用一台电脑敲代码. 找到卖电脑的人,告诉我需要一台电脑,商家就给我一台电脑,可以直接使用. (学会当老板,使唤人)
把大象装进冰箱怎么实现?
什么是类?
类: 人以类聚,一类商品
类: 类一组具有相同属性和行为的对象的集合.
神仙类;;;;;手机类
什么是对象?
对象: 将类实例化的一个具体体现.
对象能将属性和行为具体表现出来.
太上老君;;;;;手里正在拿的那个手机
什么是属性?
属性: 类的一些特点/特征
年龄非常大,不会死 ;;;; 品牌,重量,价钱,颜色等
什么是行为?
行为:就是方法,对象能做的动作
炼丹;;;; 发短信,打电话,玩游戏,聊天
总结
以上四个是什么关系?
- 类中有属性和方法
- 对象由类创建出来,对象内部有它自己具体的属性和方法
- 对象可以将属性和行为表现出来
二、面向对象编程
利用上面这些知识,完成面向对象编程(OOP)
2.1 类的定义
以手机为例,完成编程
package com.qf.oop;/*** --- 天道酬勤 ---** @author QiuShiju* @desc 手机类*/
public class Phone {// 属性定义:// [访问修饰符] 数据类型 变量名;// 访问修饰符,可写可不写String brand; // 品牌double price; // 价钱String color; // 颜色int memory; // 内存/** String brand; 属性后要不要设置值?* 不加值String brand; 这个手机类的这个属性不固定* 加值 String brand = "华为"; 这个手机类型品牌属性固定,* 意味着后面通过手机类创建出的手机对象的品牌属性直接就是"华为"* ----------------------------------* 其实属性设置不设置值,就是一个变量默认值的问题*/// 方法(今天往后类中的方法不要加static)// (自己写练习题时加static)public void call() {System.out.println("打电话" );}public void play() {System.out.println("打游戏");}
}
练习: 车类
package com.qf.oop;/*** --- 天道酬勤 ---** @author QiuShiju* @desc 类中包含属性和方法* 类的成员有属性和方法** 类就将相当于模板* 对象就是根据模板创建出的实例*/
public class Car {// 成员属性String brand;double price;String color;String num;// 成员方法public void run(){System.out.println("跑" );}public void takePeople() {System.out.println("载人" );}public void didi() {System.out.println("滴滴" );}
}
2.2 创建对象
创建对象又叫实例化
public static void main(String[] args) {// 创建对象的语法// 类名 对象名 = new 类名();Phone phone = new Phone();// 数据类型 变量名 = 值;// int[] arr = new int[3];}
2.3 使用对象
使用对象就是创建对象,使用对象内部的属性和方法
package com.qf.oop;/*** --- 天道酬勤 ---** @author QiuShiju* @desc*/
public class TestOOP {/*** 主方法中测试*/public static void main(String[] args) {// 创建对象的语法// 类名 对象名 = new 类名();Phone phone = new Phone();// 数据类型 变量名 = 值;// int[] arr = new int[3];// 使用对象,即使用属性和使用方法/** 使用属性:* 1 获得属性值* 数据类型 变量名 = 对象名.属性;* (刚创建的对象内的属性都是该数据类型的默认值)* 2 设置属性值* 对象名.属性 = 值;*/// 属性取值double price = phone.price;System.out.println("手机的价格"+price );String brand = phone.brand;System.out.println("手机的品牌:"+brand );String color = phone.color;System.out.println("手机的颜色:"+color );int num = phone.memory;System.out.println("手机内存"+num+"G" );// 属性赋值phone.brand = "HUAWEI";phone.price = 2999.0;phone.color = "黑曜石";phone.memory = 128;// 再次取值看效果double price2 = phone.price;System.out.println("手机的价格"+price2 );String brand2 = phone.brand;System.out.println("手机的品牌:"+brand2 );String color2 = phone.color;System.out.println("手机的颜色:"+color2 );int num2 = phone.memory;System.out.println("手机内存"+num2+"G" );// =================================================// 使用方法,就是对象调用方法,让方法执行// 对象名.方法名();phone.call();phone.play();}
}
练习: 创建车的对象,调用属性,调用方法
public static void main(String[] args) {// 对象创建Car car = new Car( );// 取出属性System.out.println(car.price );System.out.println(car.color );System.out.println(car.brand );System.out.println(car.num );// 属性赋值car.price = 190000;car.brand = "BYD";car.color = "玫瑰红";car.num = "豫A66666";System.out.println(car.price );System.out.println(car.color );System.out.println(car.brand );System.out.println(car.num );// 调用方法car.run();car.takePeople();car.didi();}
三、内存图
以创建对象过程画图.
凡是new,都会在内存
开辟空间,创建对象,会有地址值
在这同时,对象内部的属性和方法会初始化,赋默认值
完成对象创建,将地址值赋值给对象名
后续通过对象.属性找到堆中的对象的属性给其赋值
后续通过对象方法找到堆中对象的方法让其进栈执行
一个对象的内存图

一个类创建多个对象
/*** 一个类可以创建出多个对象* 每个对象内部都有属于自己的属性和方法,对象之间互不影响*/public static void main(String[] args) {// 创建1个对象Car car = new Car();car.brand = "玛莎";System.out.println(car.brand );// 再创建1个Car car2 = new Car();car2.brand = "劳斯莱斯";System.out.println(car2.brand );// 再创建Car car3 = new Car();car3.brand = "宾利";System.out.println(car3.brand );}

多个引用(对象名)指向同一个对象
public static void main(String[] args) {// 对象1Car car1 = new Car( );// 对象2Car car2 = new Car();car2.num = "豫A66666";// car2被car1赋值,其实是被背后的地址赋值// 赋值后,car2和car1执行同一个内存对象car2 = car1;car1.num = "豫A88888";System.out.println(car1 );System.out.println(car1.num );System.out.println("--------" );System.out.println(car2 );System.out.println(car2.num );}

作业
写12生肖类
完成作业pdfT10,T11
复习(看每天笔记大纲,每天昨天题抽1-2题再重复)
预习(下一周全是面向对象(构造方法,局部变量成员变量,this super static, 封装,继承,多态,抽象,接口))
相关文章:
day10_面向对象基础
今日内容 零、 复习昨日 一、面向对象的概念 二、面向对象编程 三、内存图 零、 复习昨日 见晨考题 每日一数组题 写一个方法 用于合并两个int类型的数组 合并法则如下 {1,2,5,8,9}{1,3,0}---->{1,2,5,8,9,1,3,0} package com.qf.array;import java.util.Arrays;/*** --- 天…...
电影订票网站的设计与开发
技术:Java、JSP等摘要:随着科技的发展,时代的进步,互联网已经成为了人们生活中不可缺少的一部分,网上购物已然是一种时代的象征。纵观市场,电影行业的发展尤为迅速,电影种类和数量的增多导致客流…...
seata【SAGA模式】代码实践(细节未必完全符合saga的配置,仅参考)
seata SAGA模式: 代码仍然是上一篇AT模式的代码:AT模式 不需要undo_log表 下面开始: 首先,saga模式依靠状态机的json文件来执行整个流程,其中的开始节点的服务即TM,然后状态机需要依靠三张表࿰…...
面试题:Java锁机制
java对象包含了三个部分:对象头,实例数据和对齐填充。对象头又存放了:markWord和class point。classpoint :指向方法区,当前对象的类信息数据。markword:存储了很多和当前对象运行时的数据:例如…...
Springboot Web开发
文章目录一. 静态资源访问1. 配置静态资源访问前缀2. 修改默认静态资源存放目录3. Webjars4. 欢迎页支持5. 自定义Favicon二. 请求处理1. 路径变量2. 请求头处理3. 查询字符串处理4. 获取Cookie的值5. 获取请求体的值6. 获取请求域中的数据7. 矩阵变量一. 静态资源访问 只要静…...
分布式事务 | 使用DTM 的Saga 模式
DTM 简介前面章节提及的MassTransit、dotnetcore/CAP都提供了分布式事务的处理能力,但也仅局限于Saga和本地消息表模式的实现。那有没有一个独立的分布式事务解决方案,涵盖多种分布式事务处理模式,如Saga、TCC、XA模式等。有,目前…...
错误代码0xc0000001要怎么解决?如何修复错误
出现错误代码0xc0000001这个要怎么解决?其实这个的蓝屏问题还是非常的简单的,有多种方法可以实现 解决方法一 1、首先使用电脑系统自带的修复功能,首先长按开机键强制电脑关机。 注:如果有重要的资料请先提前备份好,…...
为什么 HTTP PATCH 方法不是幂等的及其延伸
幂等性 首先来看什么是幂等性,根据 rfc2616(Hypertext Transfer Protocol – HTTP/1.1) 文档第 50 页底部对 Idempotent Methods 的定义: Methods can also have the property of “idempotence” in that (aside from error or expiration issues) the…...
13 Day:实现内核线程
前言:我们昨天完成了内核的内存池以及内存管理程序,今天我们要揭开操作系统多任务执行的神秘面纱,来了解并实现一个多任务的操作系统。 一,实现内核线程 在聊线程之间我们先聊聊处理器吧,众所周之现在我们的CPU动不动…...
GPU服务器安装显卡驱动、CUDA和cuDNN
GPU服务器安装cuda和cudnn1. 服务器驱动安装2. cuda安装3. cudNN安装4. 安装docker环境5. 安装nvidia-docker25.1 ubuntu系统安装5.2 centos系统安装6. 测试docker容调用GPU服务1. 服务器驱动安装 显卡驱动下载地址https://www.nvidia.cn/Download/index.aspx?langcn显卡驱动…...
结构体变量
C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体(structre)。 在程序中建立一个结构体类型: 1.结构体 建立结构体 struct Student { int num; //学号为整型 char name[20]; //姓名为字符串 char se…...
Java 多态
文章目录1、多态的介绍2、多态的格式3、对象的强制类型转换4、instanceof 运算符5、案例:笔记本USB接口1、多态的介绍 多态(Polymorphism)按字面意思理解就是“多种形态”,即一个对象拥有多种形态。 即同一种方法可以根据发送对…...
九龙证券|一夜暴跌36%,美股走势分化,标普指数创近2月最差周度表现
当地时间2月10日,美股三大指数收盘涨跌纷歧。道指涨0.5%,标普500指数涨0.22%,纳指跌0.61%。 受国际油价明显上升影响,动力板块领涨,埃克森美孚、康菲石油涨超4%。大型科技股走低,特斯拉、英伟达跌约5%。热门…...
【数据库】 mysql用户授权详解
目录 MySQL用户授权 一,密码策略 1,查看临时密码 2,查看数据库当前密码策略: 二, 用户授权和撤销授权 1、创建用户 2,删除用户 3,授权和回收权限 MySQL用户授权 一,密码策略…...
【性能】性能测试理论篇_学习笔记_2023/2/11
性能测试的目的验证系统是否能满足用户提出的性能指标发现性能瓶颈,优化系统整体性能性能测试的分类注:这些测试类型其实是密切相关,甚至无法区别的,例如几乎所有的测试都有并发测试。在实际中不用纠结具体的概念。而是要明确测试…...
C语言(输入printf()函数)
printf()的细节操作很多,对于现阶段的朋友来说,主要还是以理解为主。因为很多的确很难用到。 目录 一.转换说明(占位符) 二.printf()转换说明修饰符 1.数字 2.%数字1.数字2 3.整型转换字符补充 4.标记 -符号 符号 空格符…...
Zabbix 构建监控告警平台(四)
Zabbix ActionZabbix Macros1.Zabbix Action 1.1动作Action简介 当某个触发器状态发生改变(如Problem、OK),可以采取相应的动作,如: 执行远程命令 邮件,短信,微信告警,电话 1.2告警实验简介 1. 创建告警media type&…...
2004-2019年285个地级市实际GDP与名义GDP
2004-2019年285个地级市实际GDP和名义GDP 1、时间:2004-2019年 2、范围:285个地级市 3、说明:GDP平减指数采用地级市所在省份当年平减指数 4、代码: "gen rgdp gdp if year 2003 gen rgdp gdp if year 2003" re…...
Node.js笔记-Express(基于Node.js的web开发框架)
目录 Express概述 Express安装 基本使用 创建服务器 编写请求接口 接收请求参数 获取路径参数(/login/2) 静态资源托管-express.static(内置中间件) 什么是静态资源托管? express.static() 应用举例 托管多个静态资源 挂载路径前缀…...
力扣sql简单篇练习(十五)
力扣sql简单篇练习(十五) 1 直线上的最近距离 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 SELECT min(abs(p1.x-p2.x)) shortest FROM point p1 INNER JOIN point p2 ON p1.x <>p2.x1.3 运行截图 2 只出现一次的最大数字 2.1 题目内容 2…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...
网页端 js 读取发票里的二维码信息(图片和PDF格式)
起因 为了实现在报销流程中,发票不能重用的限制,发票上传后,希望能读出发票号,并记录发票号已用,下次不再可用于报销。 基于上面的需求,研究了OCR 的方式和读PDF的方式,实际是可行的ÿ…...
