当前位置: 首页 > news >正文

day11_面向对象

今日内容

零、 复习昨日
一、一日一题(数组,OOP)
二、面向对象练习(方法参数返回值)
三、局部变量&成员变量
四、this关键字
五、构造方法
六、重载
七、封装

小破站同步上课视频:
https://space.bilibili.com/402601570/channel/collectiondetail?sid=1091094

零、 复习昨日

见晨考

一、一日一题

2 写一个方法 用于合并两个int类型的数组 合并法则如下(合并去重排序)
{1,2,5,8,9}{1,3,0}---->{0,1,2,3,5,8,9}

package com.qf.homework;import java.util.Arrays;/*** --- 天道酬勤 ---** @author QiuShiju* @desc*/
public class Homework {public static void main(String[] args) {int[] arr1 = {1,2,5,8,9};int[] arr2 = {1,3,0,8};plus(arr1,arr2);}//    {1,2,5,8,9}{1,3,0}---->{0,1,2,3,5,8,9}// 先合并再排序后去重public static void plus(int[] arr1,int[] arr2) {// 合并int[] arr3 = new int[arr1.length + arr2.length];System.arraycopy(arr1,0,arr3,0,arr1.length);System.arraycopy(arr2,0,arr3,arr1.length,arr2.length);System.out.println(Arrays.toString(arr3) );// 去重// 创建新数组,存放不重复的元素int[] arr4 = new int[arr3.length];Arrays.sort(arr3);arr4[0] = arr3[0];int index = 1;// 取原数组元素for (int i = 1; i < arr3.length; i++) {boolean flag = false;// 不重复// 取去重后数组的元素for (int j = 0; j < arr4.length; j++) {if (arr3[i] == arr4[j]) {flag = true;}}if (!flag) {arr4[index] = arr3[i];index++;}}int[] arr5 = new int[index];System.arraycopy(arr4,0,arr5,0,index);System.out.println(Arrays.toString(arr5));}
}

3 面向对象

PDF5T10 根据要求创建类和对象

public class Worker {String name; // 姓名int age;//年龄double salary;// 薪水public void work(){System.out.println("工人工作" );}public void work(int hour) {System.out.println("工人工作时长:"+hour );}}
// 同一个java文件中只能有一个公共的类
// 且公共的类的名字要和外面文件名一样
class TestWorker{public static void main(String[] args) {Worker worker = new Worker( );worker.age = 19;worker.name = "zzz";worker.work();worker.work( 10 );}}

T11

public class Address {String address;String zipCode;}

T12

package com.qf.homework;/*** --- 天道酬勤 ---** @author QiuShiju* @desc  引用类型: 数组,类,接口*/
public class Worker {String name; // 姓名int age;//年龄double salary;// 薪水// 地址类属性Address addr;//数据类型 变量名;public void work(){System.out.println("工人工作" );}public void work(int hour) {System.out.println("工人工作时长:"+hour );}
}
// 同一个java文件中只能有一个公共的类
// 且公共的类的名字要和外面文件名一样
class TestWorker{public static void main(String[] args) {Worker worker = new Worker( );worker.age = 25;worker.name = "zhangsan";worker.salary = 2500;// Address addr = new Address();// worker.addr = addr;worker.addr = new Address();worker.addr.address = "郑州"; // 注意空指针异常问题worker.addr.zipCode = "4000";System.out.println(worker.age );System.out.println(worker.salary );System.out.println(worker.name );System.out.println(worker.addr.address );System.out.println(worker.addr.zipCode );}
}

二、面向对象练习

练习方法参数,返回值的使用

public class Phone {String brand;double price;public boolean call(String num) {System.out.println(brand + "打电话" + num);System.out.println("这个手机价格:" + price);return true;}}
class TestPhone {public static void main(String[] args) {Phone phone = new Phone( );phone.brand = "MI";phone.price = 1888.0;boolean isok = phone.call("120");System.out.println("打电话是否成功? " + isok );}}

三、局部变量&成员变量

局部变量成员变量
位置
作用域
初始值
内存位置
生命周期
public class Phone {/*** 成员属性就是成员变量* 1 类中方法外* 2 类中所有方法都可以使用* 3 成员变量会随着创建对象时被赋默认值(即可以不用主动考虑初始值的事)* 4 成员变量在内存的堆中* 5 在对象创建时出现并初始化,失去引用后,会把垃圾回收机制处理(GC)*/String brand;double price;/*** 局部变量* 1 方法参数列表内和方法体内* 2 只能在方法内部使用* 3 局部变量使用前必须主动赋值* 4 局部变量是在栈的栈帧中* 5 随着方法进栈而出现,方法执行完出栈而消失*/public boolean call(String num) {int a = 1;System.out.println(a );System.out.println(brand + "打电话" + num);System.out.println("这个手机价格:" + price);return true;}
}

image-20230213112752975

四、this关键字

this就是代表当前对象
当前对象是指,谁调用这个方法,this就代表调用这个方法的对象

因为this代表的是对象,所以它就可以调用对象的属性和方法
this.属性;
this.方法();

package com.qf.oop;/*** --- 天道酬勤 ---** @author QiuShiju* @desc*/
public class Car {String brand;double price;public void run() {int a = 1;String brand = "五菱";System.out.println("this:"+this );// 输出的是car的地址,代表car对象/*** 当成员变量和局部变量重名时* 使用时,默认使用方法自己的局部变量(就近原则)* 如果必须使用成员变量,就使用this来调用* 因为this代表对象,所以可以调用对象属性*/System.out.println(this.brand + "车跑动,跑了"+a+"公里" );// this调用方法this.didi();}public void didi() {System.out.println("车鸣笛" );}}
class TestCar {public static void main(String[] args) {Car car = new Car( );System.out.println("car:" + car );car.brand = "BYD";car.price = 150000;car.run();}
}

image-20230213145731689

使用this的场景总结:
当成员变量和局部变量重名时,用this.属性来代表成员变量.

this是什么what,能干什么how,什么时候用when?

五、构造方法

构造方法又叫构造器(constructor),是用来创建对象的.
类名 对象名 = new 类名(); 其实这个语法应该这么叫
类名 对象名 = new 构造方法();

特点

  1. 每个类都默认有一个隐藏的无参构造
  2. 没有返回值,也不能写void
  3. 方法名必须是类名
  4. 只能通过new来调用

特殊的,类中没有一个显式构造方法,那么就会默认提供一个隐式无参构造
一旦显式写出任何一个构造方法,隐式的不再提供.

image-20230213151921578

具体作用(构造方法一旦执行)

  1. 在堆中开启空间,分配地址值
  2. 属性和方法被初始化
  3. 对象创建成功,将地址值赋值给变量(对象名)

image-20230213152957390

有参构造

在创建对象时,调用有参构造方法,方法内部有对属性赋值的过程.所以有参构造创建出的对象的属性是指定值.

public class Student {String name;int age;/*** 显示的写出无参构造* 构造方法语法特点* 1. 没有返回值,也不能写void* 2. 方法名必须是类名*/public Student(){System.out.println("无参构造" );}/*** 有参构造*/public Student(String name,int age) {this.name = name;this.age = age;}public void coding(){System.out.println("敲代码" );}
}
class TestStudent{public static void main(String[] args) {// ???? 能不能创建出的对象,内部的属性直接有值// 能!!! 有参构造Student s2 = new Student("奥利安娜", 20);System.out.println(s2.age );System.out.println(s2.name);}
}

image-20230213160845240

总结有参构造和无参构造区别

  1. 相同点: 都能创建出对象
  2. 不同点: 无参构造创建出的对象属性值都是默认值;; 有参构造创建出的对象属性值是指定值

即两者都是创建对象,只是不同的效果.看情况选择使用

六、重载

重载overload: 指方法的重载

  1. 方法是在同一个类中
  2. 方法名相同,参数列表不同
  3. 参数列表不同: 个数,类型,顺序不同

好处:

方便调用,根据传入的参数的个数,顺序,类型决定执行哪个方法.不用去特别的设计不同的方法名

public class TestOverload {public static void main(String[] args) {// println其实就是一系列重载的方法// 就是方便使用System.out.println( );System.out.println(1);System.out.println(1.1);System.out.println("zzz");System.out.println(new Student());System.out.println('a');m1("");}public static void m1() {System.out.println("m1()" );}public static void m1(int a) {System.out.println("m1(int a)" );}public static void m1(String a) {System.out.println("m1(String a)" );}public static void m1(String a,int b) {System.out.println("m1(String ,int b)" );}public static void m1(int b,String a) {System.out.println("m1(int b,String a)" );}
}

Dog类,两个属性,有参无参构造,创建对象

七、类的封装

类的封装: 将代码封装在一个类中,隐藏一些代码实现的逻辑,对外提供一个公共的访问方式.


类的封装实现步骤:

  1. 属性私有
  2. 提供对应的set,get方法

setter getter方法,很固定

  1. 一定是set+属性首字母大写 setXxx getXxx
  2. set方法有参数无返回值
  3. get方法无参数有返回值
public class People {// 私有化,这个属性就只能在当前类中使用private int age;private String name;// 提供set方法供赋值public void setAge(int age) {if (age <= 120 && age >= 0) {this.age = age;}else{System.out.println("年龄有误" );}}// 提供get方法供取值public int getAge() {return age;}public void setName(String name) {this.name = name;}public String getName() {return name;}public void eat(){System.out.println("人吃饭" );}}class TestPeople{public static void main(String[] args) {People people = new People( );// people.name = "ikun";// people.age = -22;people.setAge(22);int age = people.getAge( );System.out.println(age);people.setName("kunkun");String name = people.getName( );System.out.println(name );}
}

练习: 封装上题Dog类

八、总结

局部变量成员变量: 能分清,初始值不同
this:代表当前对象,场景用来区分成员变量和局部变量
构造方法: 用来创建对象,有参和无参构造的区别
重载: 是代码的一种设计方式,可以让方法调用更方便
类的封装:先属性私有后提供一对儿setget方法

九、作业

重复2遍代码
作业.txt
pdf5中的每个题(特别10,11,12)

相关文章:

day11_面向对象

今日内容 零、 复习昨日 一、一日一题(数组,OOP) 二、面向对象练习&#xff08;方法参数返回值&#xff09; 三、局部变量&成员变量 四、this关键字 五、构造方法 六、重载 七、封装 小破站同步上课视频: https://space.bilibili.com/402601570/channel/collectiondetail?…...

大数据处理学习笔记1.1 搭建Scala开发环境

文章目录零、本讲学习目标一、Scala简介&#xff08;一&#xff09;Scala概述&#xff08;二&#xff09;函数式编程&#xff08;三&#xff09;Scala特性1、一切都是对象2、一切都是函数3、一切都是表达式&#xff08;四&#xff09;在线运行Scala二、选择Scala版本三、Window…...

VSCODE C++ 调用matplotlibcpp画图

使用VSCODE编写C程序&#xff0c;想在调试过程中看中间数据的波形&#xff0c;于是找到了python的matplotlibcpp库&#xff0c;参考文章链接是&#xff1a;https://blog.csdn.net/weixin_43769166/article/details/118365416&#xff1b;按照他的步骤配置好之后&#xff0c;跳出…...

面对“开门红”,跨境支付如何寻求新增长曲线?

易观&#xff1a;2022年是第三方支付行业洗牌加剧的一年&#xff0c;在部分机构选择退出的过程中&#xff0c;也有机构开始瞄准跨境业务&#xff0c;成为了支付机构转型的重要方向之一。跨境支付是指两个或及其以上的国家或地区进行国际贸易、国际投资或其他经济活动&#xff0…...

MySQL入门篇-MySQL MHA高可用实战

MHA简介 MHA&#xff08;Master High Availability&#xff09;目前在MySQL高可用方面是一个相对成熟的解决方案&#xff0c;它由日本DeNA公司的youshimaton&#xff08;现就职于Facebook公司&#xff09;开发&#xff0c;是一套优秀的作为MySQL高可用性环境下故障切换和主从提…...

C语言文件操作

目录1.文件指针2.文件的打开和关闭3.文件的读写3.1文件的顺序读写fgetc和fputcfgets和fputsfscanf和fprintffread和fwrite3.2文件的随机读写fseekftellrewind4.文本文件和二进制文件5.文件读取结束的判定6.文件缓冲区1.文件指针 在文件操作中&#xff0c;一个关键的概念是文件…...

Flink中核心重点总结

目录 1. 算子链 1.1. 一对一&#xff08;One-to-one&#xff0c; forwarding&#xff09; 1.2. 重分区&#xff08;Redistributing&#xff09; 1.3. 为什么有算子链 2. 物理分区&#xff08;Physical Partitioning&#xff09; 2.1. 什么是分区 2.2. 随机分区&#xff…...

gismo中NURBS的相关函数的使用---待完善

文章目录 前言一、B样条的求值1.1 节点向量的生成1.2 基函数的调用1.3 函数里面的T指的是系数类型二、以等几何两个单元12个控制点为例输出的控制点坐标有误1.4二、#pic_center <table><tr><td bgcolor=PowderBlue>二维数2.12.22.32.4三、3.13.23.33.4四、4.…...

5.数据共享与持久化

数据共享与持久化 在容器中管理数据主要有两种方式&#xff1a; 数据卷&#xff08;Data Volumes&#xff09;挂载主机目录 (Bind mounts) 数据卷 数据卷是一个可供一个或多个容器使用的特殊目录&#xff0c;它绕过UFS&#xff0c;可以提供很多有用的特性&#xff1a; 数据…...

RabbitMQ-客户端源码之AMQCommand

AMQCommand不是直接包含Method等成员变量的&#xff0c;而是通过CommandAssembler又做了一次封装。 接下来先看下CommandAssembler类。此类中有这些成员变量&#xff1a; /** Current state, used to decide how to handle each incoming frame. */ private enum CAState {EXP…...

linux设置登录失败处理功能(密码错误次数限制、pam_tally2.so模块)和操作超时退出功能(/etc/profile)

一、登录失败处理功能策略 1、登录失败处理功能策略&#xff08;服务器终端&#xff09; &#xff08;1&#xff09;编辑系统/etc/pam.d/system-auth 文件&#xff0c;在 auth 字段所在的那一部分添加如下pam_tally2.so模块的策略参数&#xff1a; auth required pam_tally2…...

Centos7上Docker安装

文章目录1.Docker常识2.安装Docker1.卸载旧版本Docker2.安装Docker3.启动Docker4.配置镜像加速前天开学啦~所以可以回来继续卷了哈哈哈&#xff0c;放假在家效率不高&#xff0c;在学校事情也少点(^_−)☆昨天和今天学了学Docker相关的知识&#xff0c;也算是简单了解了下&…...

新瑞鹏“狂飙”,宠物医疗是门好生意吗?

宠物看病比人还贵&#xff0c;正在让不少年轻一族陷入尴尬境地。在知乎上&#xff0c;有个高赞提问叫“你愿意花光积蓄&#xff0c;给宠物治病吗”&#xff0c;这个在老一辈人看来不可思议的魔幻选择&#xff0c;真实地发生在当下的年轻人身上。提问底下&#xff0c;有人表示自…...

Spring循环依赖问题,Spring是如何解决循环依赖的?

文章目录一、什么是循环依赖1、代码实例2、重要信息二、源码分析1、初始化Student对Student中的ClassRoom进行Autowire操作2、Student的自动注入ClassRoom时&#xff0c;又对ClassRoom的初始化3、ClassRoom的初始化&#xff0c;又执行自动注入Student的逻辑4、Student注入Class…...

更改SAP GUI登录界面信息

在SAP GUI的登录界面&#xff0c;左部输入登录信息如客户端、用户名、密码等&#xff0c;右部空余部分可维护一些登录信息文本&#xff0c;如登录的产品、客户端说明及注意事项等&#xff0c;此项操作详见SAP Notes 205487 – Own text on SAPGui logon screen 维护文档使用的…...

分布式微服务架构下网络通信的底层实现原理

在分布式架构中&#xff0c;网络通信是底层基础&#xff0c;没有网络&#xff0c;也就没有所谓的分布式架构。只有通过网络才能使得一大片机器互相协作&#xff0c;共同完成一件事情。 同样&#xff0c;在大规模的系统架构中&#xff0c;应用吞吐量上不去、网络存在通信延迟、我…...

进大厂必备的Java面试八股文大全(2023最新精简易懂版,八股文中的八股文)

为什么同样是跳槽&#xff0c;有些人薪资能翻三倍&#xff1f;” 最近一个粉丝发出了灵魂拷问&#xff0c;类似的问题我收到过很多次&#xff0c;身边也确实有认识的同事、朋友们有非常成功的跳槽经历和收益&#xff0c;先说一个典型例子&#xff1a; 学弟小 A 工作一年半&am…...

都说测试行业饱和了,为什么我们公司给初级测试开到了12K?

故事起因&#xff1a; 最近我有个刚毕业的学生问我说&#xff1a;我感觉现在测试行业已经饱和了&#xff0c;也不是说饱和了&#xff0c;是初级的测试根本就没有公司要&#xff0c;哪怕你不要工资也没公司要你&#xff0c;测试刚学出来&#xff0c;没有任何的项目经验和工作经验…...

解决Idea启动项目失败,提示Error running ‘XXXApplication‘: Command line is too long

IDEA版本为&#xff1a;IntelliJ IDEA 2018.2 (Ultimate Edition)一、问题描述有时当我们使用IDEA&#xff0c;Run/Debug一个SpringBoot项目时&#xff0c;可能会启动失败&#xff0c;并提示以下错误。Error running XXXApplication: Command line is too long. Shorten comman…...

GB/T28181-2022针对H.265、AAC的说明和技术实现

GB/T28181-2022规范说明GB/T28181-2022相对来GB/T28181-2016针对H.265、AAC的更新如下&#xff1a;——更改了“联网系统通信协议结构图”&#xff0c;媒体流通道增加了 H.265、G.722.1、AAC&#xff08;见 4.3.1&#xff0c;2016 年版的 4.3.1&#xff09;。——增加了对 H.26…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...