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…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...