day12_oop
今日内容
上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili
同步笔记沐沐霸的博客_CSDN博客-Java2301
零、 复习昨日
一、作业
二、继承
三、重写
四、this和super
五、访问修饰符
零、 复习昨日
局部变量和成员变量什么区别
位置,作用域,初始值,内存位置,生命周期构造方法什么作用
作用: 创建对象有参无参构造什么区别
无参构造方法: 创建出的对象的属性是默认值
有参构造方法: 创建出的对象的属性是指定值public Student(String name,int age){this.name = name;this.age = age; }
创建对象的过程(new Student()或者说new Student(int age,String name))
- 在堆中开启空间,分配地址值
- 属性和方法被初始化默认值
- 然后执行构造方法内部的代码
- 对象创建成功,将地址值赋值给变量(对象名)
this是什么
this代表当前对象,调用属性和方法类封装的步骤
- 私有化属性
- 给每个属性提供对应的set get方法
一、作业
老师类
学生类
老师带1个学生
/*** --- 天道酬勤 ---* @author QiuShiju* @desc null就是没有,就是空引用,就是空对象,就是没有对象的意思* 自定义类型赋值就是创建对象,将地址值赋值给变量,* 例如, 自己定义类Worker, 有一个变量 Worker worker,要给worker赋值就new Worker();*/
class Student {String name;String stuNo;
}public class Teacher {String name;int age;Student student;
}class TestTeacher {public static void main(String[] args) {Teacher teacher = new Teacher( );// 给老师内学生类型属性赋值teacher.student = new Student();String name = teacher.student.name;System.out.println(name );teacher.student.name = "海中";String name2 = teacher.student.name;System.out.println(name2 );}
}
老师类
学生类
老师带了很多学生
把学生存倒数组中 Student[] stus = new Student[6];
class Student {String name;String stuNo;public Student(){}public Student(String name,String stuNo){this.name = name;this.stuNo = stuNo;}
}public class Teacher {String name;int age;// 老师内有一个学生// Student student;// 老师内有多个学生/*** 这是数组,只不过是装学生的数组* 只是创建时指定了长度,没有指定值* 这个数组创建后默认值是3个null*/Student[] stuArr = new Student[3];
}
class TestTeacher {public static void main(String[] args) {Teacher teacher = new Teacher( );// 从老师对象中取出学生数组// 从数组中取出第1个元素,是null// null.name 就会报错空指针(空引用,空对象)异常// String name = teacher.stuArr[0].name;// 先向数组存储学生对象teacher.stuArr[0] = new Student("影流之主","111");teacher.stuArr[1] = new Student("疾风剑豪","222");teacher.stuArr[2] = new Student("盖伦","333");// 再取出值System.out.println(teacher.stuArr[0].name );}
}
全封装之后的效果(Student,Teacher类封装)
package com.qf.homework;
class Student {private String name;private String stuNo;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getStuNo() {return stuNo;}public void setStuNo(String stuNo) {this.stuNo = stuNo;}public Student(){}public Student(String name,String stuNo){this.name = name;this.stuNo = stuNo;}}public class Teacher {private String name;private int age;// 老师内有多个学生private Student[] stuArr = new Student[3];public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Student[] getStuArr() {return stuArr;}public void setStuArr(Student[] stuArr) {this.stuArr = stuArr;}
}class TestTeacher {public static void main(String[] args) {Teacher teacher = new Teacher( );Student[] stuArr = new Student[3];stuArr[0] = new Student("影流之主","111");stuArr[1] = new Student("疾风剑豪","222");stuArr[2] = new Student("德玛西亚","333");teacher.setStuArr(stuArr);//Student[] stuArr1 = teacher.getStuArr( );//Student student2 = stuArr1[2];//String name = student2.getName( );String name = teacher.getStuArr( )[2].getName( );System.out.println(name);}
}
二、继承[重点]
2.1 介绍
生活中的继承: 子辈可以使用(继承)父辈的资源
程序中的继承: 子类可以使用父类的属性和方法
好处:
- 可以使代码复用
- 可以开发效率
- 是多态的前提
2.2 语法
类继承另一个类语法
public class A extends B {}
读做: A类继承B类,A类是B类的子类,B类是A类的父类
继承特点:
- 继承后子类可以使用父类的属性和方法
- 不能多继承,只能单继承
- 支持层次继承(A --> B --> C)
继承中属性的问题
- 子类可以使用父类的非私有的属性
- 父类不可以使用子类的属性
- 如果子类和父类有相同的属性,默认使用子类自己的属性
继承中方法的问题
- 子类可以使用父类非私有的方法
- 父类不可以使用子类的方法
- 如果子类和父类有相同的方法,默认使用子类自己的方法 (详细内容下集(重写)分解)
继承中构造方法的问题
- 构造方法都不能被直接调用
- 子类构造方法执行,会先调用父类的构造方法,因为子类构造方法内有隐藏的super()调用父类的无参构造,且必须放在构造方法第一行
- 即创建子类对象时,会先创建父类对象再创建子类对象
练习: Dog,Cat 继承 Animal
Teacher,Student,Worker 继承 People
2.3 继承中创建对象的过程
-
先执行父类构造方法,在堆中为开启空间,分配地址值
-
为父类的属性和方法 初始化默认值
-
然后执行父类构造方法内部的代码
-
然后再初始化子类属性和方法,初始化默认值
-
然后执行子类构造方法内代码
-
创建对象完成,将子类引用赋值对象名
对照PDF6中的T8练习
三、重写
重载Overload
重写OVerride
- 重写是发生在继承中,子父类中
- 重写要求子类重写父类方法
- 要求: 访问修饰符,返回值类,方法名,参数列表完全和父类一样
方法体内的代码,可以不一样- 一般重写后,子类的方法上都会有一个@Override
@Override // 这是重写的标记,告诉程序这个方法是重写父类的public void eat() {System.out.println("狗吃骨头");}
为什么要有重写?自己创建一个方法不行吗?非得重写?
父类的方法不适合用于子类,子类就需要重写. (白话: 在父类方法的基础上,将方法改造成适合自己的)
四、this和super
this是当前对象
this调用对象的属性 this.属性
this调用对象的方法 this.方法
this调用自己的构造方法 this() 调用自己无参构造,this(参数) 调用自己有参构造
super是父类对象,可以调用父类的属性 super.属性
调用父类方法 super.方法();
特殊的,也可以放在构造方法中调用父类的构造方法super()调用父类无参构造,super(参数)调用父类有参构造
this | super | |
---|---|---|
属性 | ||
方法 | ||
构造方法 | ||
… |
五、练习
PDF6 , T15 见课件代码。。。
六、访问修饰符
访问修饰符,也叫做访问限定符,访问控制符,其实就是控制权限
控制着类,属性,方法以及构造方法的访问权限(在不同的位置能不能使用)
访问修饰符有4个
public , protected , 缺省(默认) , private
当前类 | 当前包其他类 | 不同包的子类 | 不同包非子类 | |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | 自己调用自己的属性不行;子类对象可以调用 | × |
默认(package) | √ | √ | × | × |
private | √ | × | × | × |
访问修饰符可访问的范围: public > protected > package > private
七、作业
PDFT17
相关文章:
day12_oop
今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、继承 三、重写 四、this和super 五、访问修饰符 零、 复习昨日 局部变量和成员变量什么区别 位置,作用域,初始值,内存位置,生命周期 构造方法…...
在 Flutter 中使用 webview_flutter 4.0 | js 交互
大家好,我是 17。 已经有很多关于 Flutter WebView 的文章了,为什么还要写一篇。两个原因: Flutter WebView 是 Flutter 开发的必备技能现有的文章都是关于老版本的,新版本 4.x 有了重要变化,基于 3.x 的代码很多要重…...
嵌入式ARM工业边缘计算机BL302的CAN总线接口如何设置?
CAN 接口如图所示,输入如下命令: ifconfig -a //查看所有网卡 如果 FlexCAN 驱动工作正常的话就会看到 CAN 对应的网卡接口,如图。从图中可 以看出,有一个名为“can0”的网卡,这个就是 BL302 板上的 CAN1 接口对应的 c…...
Win11系统如何安装Ubuntu20.04(WSL版本)并安装docker
终于还是下定决心去换电脑了……这次采用轻量级的WSL,发现虽然没有占内存的GUI界面,但是编码和阅读文档还是非常nice的 1、首先开启Win11的虚拟机服务 2、下载你期望的Ubuntu服务器(这里以20.04为例) 安装成功后,发现…...
Elasticsearch和Solr的区别
背景:它们都是基于Lucene搜索服务器基础之上开发,一款优秀的,高性能的企业级搜索服务器。(是因为他们都是基于分词技术构建的倒排索引的方式进行查询)开发语言:java语言开发诞生时间:Solr2004年…...
如何在北京买房
首先我陈述一点,如果为了买房后再卖掉赚取差价,我这篇文章也许不适合,我这篇文章为整体愿景的发展而设计,为可操作房产的买卖而操作。 买房的愿景: 首先,我们要以一种心态来买房。那就是以始为终的态度&am…...
使用Proxifier+burp抓包总结
一、微信小程序&网页抓包 1. Proxifier简介 Proxifier是一款功能非常强大的socks5客户端,可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链。 2. 使用Proxifier代理抓包 原理:让微信相关流量先走127.0.0.1:80到burp。具体…...
安装华为aab包的处理方式
1、转换 aab包 为 apks 说明: 1、bundletool-all-1.11.2.jar 转换文件的工具 2、a.aab aab源文件 3、xxx.apks 导入的文件以及路径(例如:D:\Android\xxx.apks) 4、–ksxxxx.jks 该aab打包所需的jsk文件 5、三条命令为 jsk打包所…...
Word处理控件Aspose.Words功能演示:使用 C++ 将 RTF 文档转换为 PDF
Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外,API支持所有流行的Word处理文件…...
【Java|多线程与高并发】进程与线程的区别与联系
文章目录什么是进程什么是线程上下文切换多线程一定比串行执行快吗进程与线程的区别与联系什么是进程 进程的定义:进程是正在运行的程序实体,并且包括这个运行的程序中占据的所有系统资源,比如说CPU(寄存器),IO,内存&a…...
K8s手工创建kubeconfig
我们通过 kubectl 命令行连接 k8s apiserver 时需要依赖 kubeconfig 文件。 kubeconfig 文件通常包含了 context(上下文)列表,每个 context 又会引用 cluster 和 user,最后通过 current-context 指定当前 kubeconfig 使用哪个 con…...
【SQL开发实战技巧】系列(十七):时间类型操作(下):确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数
系列文章目录 【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧…...
代码随想录算法训练营第二十八天 | 491.递增子序列,46.全排列,47.全排列 II
一、参考资料递增子序列题目链接/文章讲解:https://programmercarl.com/0491.%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.html 视频讲解:https://www.bilibili.com/video/BV1EG4y1h78v 全排列题目链接/文章讲解:https://programmercarl.…...
使用 Three.js 后处理的粗略铅笔画效果
本文使用Three.js的后处理创建粗略的铅笔画效果。我们将完成创建自定义后处理渲染通道、在 WebGL中实现边缘检测、将法线缓冲区重新渲染到渲染目标以及使用生成和导入的纹理调整最终结果的步骤。翻译自Codrops,有改动。 Three.js 中的后处理 Three.js中的后处理是一…...
推荐一些不常见的搜索引擎
5.雅虎网来自 Yahoo.com 的屏幕截图,2023 年 2 月截至 2022 年 1 月,Yahoo.com(Verizon Media)的搜索市场份额为 11.2%。雅虎的优势在于多元化,除搜索外还提供电子邮件、新闻、金融等服务。二十多年来,雅虎…...
RabbitMQ工作模式
目录1.Work queues工作队列模式1.1 模式说明1.2 代码1.3 测试1.4 小结2.订阅模式类型3.Publish/Subscribe发布与订阅模式3.1 模式说明3.2 代码3.3 测试3.4 小结4.Routing路由模式4.1 模式说明4.2 代码4.3 测试4.4 小结5.Topics通配符模式5.1 模式说明5.2 代码5.3 测试5.4 小结6…...
机器学习在预测脊髓型颈椎病中的应用:一项28名参与者的事后初步研究
机器学习在预测脊髓型颈椎病中的应用:一项28名参与者的事后初步研究 Machine Learning for the Prediction of Cervical Spondylotic Myelopathy: A Post Hoc Pilot Study of 28 Participants 简单说:训练了两个模型:1)预测脊髓型颈椎病诊断࿰…...
【智能计算数学】微积分
高数问题解决流程引例:回归回归引例:分类分类线性可分FLD线性不可分智能计算讨论范围下降法为什么要用下降法?- 解析解很难写出公式或很复杂难计算有哪些常用的下降法?- 梯度下降&高斯-牛顿法梯度下降(Gradient De…...
win10+RTX4070ti+libtorch部署
环境cuda 11.7、cudnn8.6.0、libtorch1.13.1cu117 注意: 1)libtorch官网进不去的可直接下载 Release version https://download.pytorch.org/libtorch/cu117/libtorch-win-shared-with-deps-1.13.1%2Bcu117.zip Debug version https://download.pytorch.…...
【Python百日进阶-Web开发-Vue3】Day518 - Vue+ts后台项目5:用户列表
文章目录 一、获取用户列表的数据1.1 定义用户列表和角色列表的接口src/request/api.ts1.2 获取用户列表数据src/views/UserView.vue二、定义用户列表数据类型2.1 src/type/user.ts三、展示用户列表内容3.1 element-plus中的Select 选择器3.2 element-plus中的表格插槽3.3 展示…...
Linux内核转储---kdump原理梳理
文章目录Kexec和Kdump设计的区别kexeckdumpKdump的执行流程kexec的实现用户空间kexec内核空间vmcoreKdump的实现可以分为两部分:内核和用户工具。内核提供机制,用户工具在这些机制上实现各种转储策略,内核机制对用户工具的接口是一个系统调用…...
【C++】从0到1入门C++编程学习笔记 - 实战篇:演讲比赛流程管理系统
文章目录一、演讲比赛程序需求1.1 比赛规则1.2 程序功能1.3 程序效果图:二、项目创建2.1 创建项目2.2 添加文件三、创建管理类3.1创建文件3.2 头文件实现3.3 源文件实现四、菜单功能4.1 添加成员函数4.2 菜单功能实现4.3 测试菜单功能五、退出功能5.1 提供功能接口5…...
04 OpenCV位平面分解
1 基本概念 位平面分解的核心思想是将图像的每一个像素分解为多个二进制位,分别存储在不同的位平面上。例如,如果一个图像是8位深度的,则可以分解为8个位平面,每个位平面上存储一个二进制位。 位平面分解在图像压缩中有着重要的…...
Onvif协议如何判断摄像机支持 —— 筑梦之路
有人就问什么是Onvif协议呢? 全称为:Open Network Video Interface Forum.缩写成Onvif。 翻译过来是:开放型网络视频接口论坛,目的是确保不同安防厂商的视频产品能够具有互通性,这样对整体安防行业才是良性发展。 现…...
情人节new一个对象给你
今天情人节,有没对象的吗?假设你不知道new怎么用,每个人都有两种身份,一种没对象的人,这个时候new一个对象给你,一种是有对象的人,这个delete对象。等你学完这个new和delete知识点,无…...
linux篇【15】:应用层-网络https协议
目录 一.HTTPS介绍 1.HTTPS 定义 2.HTTP与HTTPS (1)端口不同,是两套服务 (2)HTTP效率更高,HTTPS更安全 3.加密,解密,密钥 概念 4.为什么要加密? 5.常见的加密方式…...
索引-性能分析-explain
explain 执行计划 explain 执行计划各字段含义 1)id 就是代表 sql 的执行顺序或者表的执行顺序;id相同从上往下执行,id不同,id值越大越先执行;(注:有子查询时就会出现sql执行顺序)…...
mbedtls加密组件使用示例
1 mbedtls aes组件的使用 1.1 AES ECB加解密接口使用 int main(int argc, char *argv[]) {char key[256];char *inbuf calloc(1, 257);char *outbuf calloc(1, 257);char *buf calloc(1,257);char *tmp_outbuf outbuf;char *tmp_buf buf;mbedtls_aes_context aes_ctx;mb…...
如何量测太阳光模拟器的光谱致合度?
太阳模拟器是根据国际法规JIS、IEC60904、美国材料试验协会开发设计的AAA级太阳模拟器。对于100毫米100毫米和200毫米200毫米的光斑尺寸,光斑强度的输出功率范围可以从0.1到1太阳光强度。此外,还提供了灵活的出光方向,以满足用户的研究需求&a…...
网络安全领域中CISP证书八大类都有什么
CISP注册信息安全专业人员 注册信息安全专业人员(Certified Information Security Professional),是经中国信息安全产品测评认证中心实施的国家认证,对信息安全人员执业资质的认可。该证书是面向信息安全企业、信息安全咨询服务…...
深圳网页网站设计/经典软文文案
int connfd accept(listenfd, (struct sockaddr *)&clientaddr, &cli_len); 最后发现是初始化的问题,cli_len和clientaddr不能为负值,因为上面没有初始化,所以在accept的时候会出问题。最后加上初始化的代码,问题就解决了…...
做新闻网站/一个域名大概能卖多少钱
问题: 我在项目中使用spring 的Scheduled 标签来完成定时任务配置,现在需要打包部署两个节点,需要通过配置的方式控制是否开启定时任务 解决方案: Spring boot中有个注解ConditionalOnProperty,这个注解能够控制某个c…...
web个人博客网站/站长查询工具
版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢! 本文网址:https://sunkuan.blog.csdn.net/article/details/120773417 文章目录 一、配置文件(build.gradle)1、plugins2、repositories3、dependencies二、使用本地Maven仓库1、配置环境变量2、…...
顺德品牌网站建设咨询/百度收录查询工具
文章目录问题描述解决方法参考问题描述 使用 pytorch jit 自己写的模型的时候,显示了以下错误: /home/chiebotgpuhq/anaconda3/envs/kp2dn/lib/python3.7/site-packages/torch/jit/_trace.py:966: TracerWarning: Output nr 1. of the traced function does not match the co…...
金融公司网站源码/如何在网上推广产品
原文博客:Doi技术团队 链接地址:https://blog.doiduoyi.com/authors/1584446358138 初心:记录优秀的Doi技术团队学习经历 前言 本篇文章将介绍如何搭建使用Nginx和Tomcat的高可用高并发的网站,我们将会在CentOS系统上搭建这样一个…...
学校网站系统破解版/马鞍山seo
第一篇 旧的无线电波段划分中L、S、C、X、Ku、Ka、W波段频率分为分别是多少? 这种划分方式是雷达业内的通俗叫法,没有一个严格、统一的标准。通常的划分是:L波段 1~2GHz;S波段 2~4GHz;C波段 4~8GHz;X波段 8…...