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

java后端开发day20--面向对象进阶(一)--static继承

在这里插入图片描述
(以下内容全部来自上述课程)
在这里插入图片描述

1.static–静态–共享

static表示静态,是java中的一个修饰符,可以修饰成员方法,成员变量。

1.静态变量

被static修饰的成员变量,叫做静态变量。
特点:

  • 被该类所有对象共享
  • 不属于对象,属于类
  • 随着类的加载而加载,优先于对象存在

调用方式:

  • 类名调用(推荐)
  • 对象名调用

2.静态方法

被static修饰的成员方法,叫做静态方法。
特点:

  • 多用在测试类和工具类中
  • javabean类中很少会用

调用方法:

  • 类名调用(推荐)
  • 对象名调用

3.static内存图

静态变量是随着类的加载而加载的,优先于对象出现的。请添加图片描述

4.工具类

JavaBean类:用来描述一类事物的类。
测试类:用来检查其他类是否书写正确,带有main方法的类,是程序的入口。
工具类:不是用来描述一类事物的,而是帮我们做一些事情的类。

1.规则:
  • 类名见名知意
  • 私有化构造方法
  • 方法定义为静态
2.练习:

需求:在实际开发中,经常会遇到一些数组使用的工具类。
请按照如下要求编写一个数组的工具类:ArrayUtil

  • 提供一个工具类方法printArr,用于返回整数数组的内容。
    返回的字符串格式如:[10,20,50,34,100](只考虑整数数组,且只考虑一维数组)

  • 提供这样一个工具方法getAerage,用于返回平均分。(只考虑浮点型数组,且只考虑一维数组)

  • 定义一个测试类TestDemo,调用该工具类的工具方法,并返回结果。

工具类:

package a02staticdemo2;public class ArrayUtil {//私有构造方法//目的:是不让其他类创建本类对象private ArrayUtil(){}//需要定义为静态的,方便调用public static String printArr(int[] arr){StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {if(i == arr.length - 1){sb.append(arr[i]);}else{sb.append(arr[i]).append(", ");}}sb.append("]");String s = sb.toString();return s;}//返回平均值public static double getAvg(int[] arr){int sum = 0;for (int i = 0; i < arr.length; i++) {sum += arr[i];}int avg = sum / arr.length;return avg;}
}

测试类:

package a02staticdemo2;public class TestDemo {public static void main(String[] args) {//测试工具类中的两个方法是否正确int[]arr = {1,2,3,4,5};double avg = ArrayUtil.getAvg(arr);System.out.println(avg);String s = ArrayUtil.printArr(arr);System.out.println(s);}
}

5.注意事项

  • 静态(公有)方法中,只能访问静态。
  • 非静态(私有)方法可以访问所有。
  • 静态方法中没有this关键字。(非静态中存在隐藏this,在形参之前,由虚拟机赋值)

2.继承

面向对象的三大特征:封装、继承、多态。
封装:对象代表什么,就得封装对应的数据,并提供数据对应的行为。

1.定义

  • java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起继承关系。
public class Student extends Person{}
  • Student称为子类(派生类),Person称为父类(基类或者超类)。

2.好处

  • 可以把多个子类中重复的代码抽取到父类中,提高了代码的复用性。
  • 子类可以在父类的基础上,增加其他的功能,使子类更强大。

3.什么时候用继承

当类与类之间,存在相同(共性)的内容,并满足子类是父类中的一种,就可以考虑使用继承,来优化代码。

4.继承的特点

java只支持单继承(一个爹),不支持多继承(好几个爹),但支持多层继承(子孙三代)。
每一个类都直接或者间接的继承于Object(爷爷)。

5.例子

请添加图片描述

1.Animal
package a01loopextendsdemo1;public class Animal {public void eat(){System.out.println("动物吃东西");}public void drink(){System.out.println("动物喝水");}
}
2.Cat
package a01loopextendsdemo1;public class Cat extends Animal{public void catchMouse(){System.out.println("猫抓老鼠");}
}
3.Dog
package a01loopextendsdemo1;public class Dog extends Animal{public void lookHome(){System.out.println("狗看家");}
}
4.布偶猫
package a01loopextendsdemo1;public class Ragdoll extends Cat{}
5.狸花猫
package a01loopextendsdemo1;public class LIHua extends Cat{
}
6.哈士奇
package a01loopextendsdemo1;public class Husky extends Dog{public void breakHoom(){System.out.println("哈士奇拆家");}
}
7.泰迪
package a01loopextendsdemo1;public class Teddy extends Dog{public void touch(){System.out.println("泰迪狗蹭来蹭去");}
}
8.测试类
package a01loopextendsdemo1;public class Test {public static void main(String[] args) {//创建对象并调用方法//1.创建布偶猫的对象Ragdoll ragdoll = new Ragdoll();ragdoll.eat();ragdoll.drink();//2.创建狸花猫的对象LIHua liHua = new LIHua();liHua.eat();//3.创建哈士奇的对象Husky husky = new Husky();husky.eat();husky.drink();}
}

相关文章:

java后端开发day20--面向对象进阶(一)--static继承

&#xff08;以下内容全部来自上述课程&#xff09; 1.static–静态–共享 static表示静态&#xff0c;是java中的一个修饰符&#xff0c;可以修饰成员方法&#xff0c;成员变量。 1.静态变量 被static修饰的成员变量&#xff0c;叫做静态变量。 特点&#xff1a; 被该类…...

FastJSON 默认行为:JSON.toJSONString 忽略 null 字段

完整的 FakeRegistrationController 代码&#xff0c;这让我可以全面分析后端逻辑&#xff0c;特别是为什么空的字段&#xff08;如 compareDate&#xff09;不返回给前端。我将详细分析代码的每个接口&#xff0c;尤其是与 list 请求和字段返回相关的部分&#xff0c;并解释原…...

数据结构:基数排序(c++实现)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 基数排序的定义和基本原理基本原理具体步骤 基数排序的优缺点&#xff1a;代码实现总结 基数排序的定义和基本原理 基数排序(Radix Sort)是一…...

DOM 事件 HTML 标签属性速查手册

以下是一份 DOM 事件 & HTML 标签属性速查手册&#xff0c;涵盖常用场景和示例&#xff0c;助你快速查阅和使用&#xff1a; 一、DOM 事件速查表 1. 鼠标事件 事件名触发时机适用元素示例代码click元素被点击任意可见元素button.addEventListener(click, () > { ... …...

PhotoShop学习01

了解Photoshop 这里省略了Photoshop的软件安装&#xff0c;请自行查找资源下载。 1.打开图片 下图为启动photoshop后出现的界面&#xff0c;我们可以通过创建新文件或打开已有文件来启用photoshop的工作界面。 可以通过左边的按钮进行新文件的创建或打开已有文件。 也可以点…...

mongodb【实用教程】

MongoDB 是一个开源的文档型数据库管理系统 下载安装 Windows 系统 https://blog.csdn.net/weixin_41192489/article/details/126777309 GUI工具 【推荐】MongoDB Compass https://www.mongodb.com/zh-cn/docs/compass/current/ Robo 3T https://blog.csdn.net/weixin_4119248…...

C语言机试编程题

编写版本&#xff1a;vc2022 1.求最大/小值 #include<stdio.h> int main(){int a[50],n;int max, min;printf("请输入您要输入几个数");scanf_s("%d", &n);printf("请输入您要比较的%d个数\n",n);for (int i 0; i<n; i) {scanf_…...

threeJs+vue 轻松切换几何体贴图

嗨&#xff0c;我是小路。今天主要和大家分享的主题是“threeJsvue 轻松切换几何体贴图”。 想象一下&#xff0c;手头上正好有个在线3D家具商店&#xff0c;用户不仅可以看到产品的静态图片&#xff0c;还能实时更换沙发的颜色或材质&#xff0c;获得真实的购物体验。…...

Android ObjectBox数据库使用与集成指南

ObjectBox其核心特点ObjectBox与 SQLite 和 Realm 的对比Android集成ObjectBox创建ObjectBox实体对象创建ObjectBox操作管理类OBManager在Application初始化ObjectBox插入或更新数据查询数据统计数据分页数据查询删除数据总结今天分享一套Android另一个数据库ObjectBox。Object…...

【HarmonyOS Next】地图使用详解(一)

背景 这系列文章主要讲解鸿蒙地图的使用&#xff0c;当前可以免费使用&#xff0c;并提供了丰富的SDK给开发者去自定义控件开发。目前可以实现个性化显示地图、位置搜索和路径规划等功能&#xff0c;轻松完成地图构建工作。需要注意的是&#xff0c;现在测试只能使用实体手机去…...

seacmsv9注入管理员账号密码+orderby+limi

1&#xff1a;mysql默认存储引擎innoDB携带的表 1&#xff0c;mysql.innodb_table_stats 2,mysql.innodb_index_stats SELECT table_name FROM mysql.innodb_table_stats WHERE database_name DATABASE(); 2&#xff1a; 关键字做处理 HEX编码:0x696E666F726D6174696F6E5F7…...

C#与AI的交互(以DeepSeek为例)

C#与ai的交互 与AI的交互使用的Http请求的方式&#xff0c;通过发送请求&#xff0c;服务器响应ai生成的文本 下面是完整的代码&#xff0c;我这里使用的是Ollama本地部署的deepseek&#xff0c;在联网调用api时&#xff0c;则url会有不同 public class OllamaRequester {[Se…...

面试八股文--数据库基础知识总结(2) MySQL

本文介绍关于MySQL的相关面试知识 一、关系型数据库 1、定义 关系型数据库&#xff08;Relational Database&#xff09;是一种基于关系模型的数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;它将数据存储在表格&#xff08;表&#xff09;中&#xff0c;并通过表格…...

Failed to start The PHP FastCGI Process Manager.

报错如下&#xff1a; Job for php-fpm.service failed because the control process exited with error code. See "systemctl status php-fpm.service" and "journalctl -xe" for details. 2月 25 21:49:00 nginx systemd[1]: Starting The PHP FastC…...

软件供应链安全工具链研究系列——RASP自适应威胁免疫平台(上篇)

1.1 基本能力 RASP是一种安全防护技术&#xff0c;运行在程序执行期间&#xff0c;使程序能够自我监控和识别有害的输入和行为。也就是说一个程序如果注入或者引入了RASP技术&#xff0c;那么RASP就和这个程序融为一体&#xff0c;使应用程序具备了自我防护的能力&#xff0c;…...

Spring Boot集成MyBatis访问MySQL:从项目搭建到基础数据库查询(基础入门)

Spring Boot集成MyBatis访问MySQL 一、引言 在当今企业级应用开发中&#xff0c;Spring Boot、MyBatis与MySQL的组合凭借其高效性和灵活性&#xff0c;成为构建数据驱动型应用的首选方案。本文将带你从零开始搭建项目&#xff0c;掌握Spring Boot集成MyBatis的基础入门内容。…...

一周学会Flask3 Python Web开发-Jinja2模板继承和include标签使用

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 不管是开发网站还是后台管理系统&#xff0c;我们页面里多多少少有公共的模块。比如博客网站&#xff0c;就有公共的头部&…...

【2025.2.25更新】wordpress免费AI插件,文章内容、图片自动生成、视频自动生成、网站AI客服、批量采集文章,内置deepseek联网满血版

wordpress免费AI插件&#xff0c;文章内容、文章图片、长尾关键词、视频自动生成、网站AI客服、批量采集文章&#xff0c;插件已接入腾讯云大模型知识引擎xDeepSeek&#xff0c;基于腾讯云大模型知识引擎xDeepSeek可联网满血版&#xff0c;插件可实现文章生成、长尾关键词生成、…...

待解决 leetcode71 简化路径 栈的应用

用多种ifelse很不好很复杂容易丢情况 class Solution { public:string simplifyPath(string path) {stack<char> st;string result;int n path.size();while(n > 1 && (path[n-1] / || path[n-1] .)){if(n > 2 && path[n-2] . && pat…...

数据安全_笔记系列09_人工智能(AI)与机器学习(ML)在数据安全中的深度应用

数据安全_笔记系列09_人工智能&#xff08;AI&#xff09;与机器学习&#xff08;ML&#xff09;在数据安全中的深度应用 人工智能与机器学习技术通过自动化、智能化的数据分析&#xff0c;显著提升了数据分类、威胁检测的精度与效率&#xff0c;尤其在处理非结构化数据、复杂…...

尚硅谷JavaScript(基础+高级)实战笔记全解析【从入门到精通】

1. JavaScript入门&#xff1a;从零开始搭建编程思维 第一次接触JavaScript时&#xff0c;我和大多数新手一样被各种术语绕得头晕。直到跟着尚硅谷的教程把代码敲进浏览器控制台&#xff0c;看到第一个"Hello World"弹窗跳出来&#xff0c;才真正理解什么叫"让网…...

MCP23009E I²C GPIO扩展器驱动开发与中断实战

1. MCP23009E I/O扩展器深度技术解析&#xff1a;面向嵌入式工程师的全栈驱动开发指南MCP23009E是Microchip公司推出的8位IC接口GPIO扩展芯片&#xff0c;专为资源受限的嵌入式系统设计。与常见的MCP23017/23018不同&#xff0c;MCP23009E采用单端口架构&#xff08;GP0–GP7&a…...

Ubuntu系统下SocketCAN实战:免驱配置PCAN/PCAN FD设备全流程

1. 认识SocketCAN与PCAN设备 在嵌入式开发和汽车电子领域&#xff0c;CAN总线就像设备之间的"神经传导系统"&#xff0c;而SocketCAN则是Linux内核为这个系统提供的"标准语言接口"。我第一次接触PCAN设备时&#xff0c;发现它有个巨大优势——大多数型号在…...

别再为分享文件发愁了!Android开发者的FileProvider保姆级配置指南(附避坑清单)

Android文件共享实战&#xff1a;FileProvider全流程配置与深度避坑指南 每次看到团队成员在Slack群里抱怨"为什么我的分享功能又崩溃了&#xff1f;"&#xff0c;我就知道又有开发者掉进了Android文件共享的陷阱。作为从Android 4.4时代就开始与FileProvider斗智斗勇…...

EasyEdit完全教程:从事实编辑到概念编辑的完整路径

EasyEdit完全教程&#xff1a;从事实编辑到概念编辑的完整路径 【免费下载链接】EasyEdit [ACL 2024] An Easy-to-use Knowledge Editing Framework for LLMs. 项目地址: https://gitcode.com/gh_mirrors/ea/EasyEdit EasyEdit是一个功能强大的大语言模型知识编辑框架&a…...

Nunchaku FLUX.1-dev 操作系统兼容性指南:Windows系统部署要点

Nunchaku FLUX.1-dev 操作系统兼容性指南&#xff1a;Windows系统部署要点 如果你是一名Windows开发者&#xff0c;想在自己的电脑上跑起来Nunchaku FLUX.1-dev&#xff0c;那你来对地方了。我知道&#xff0c;很多AI模型和工具的教程&#xff0c;默认都是给Linux或者macOS用户…...

Phi-4-mini-reasoning 3.8B在VSCode中的智能编程应用:Codex风格体验

Phi-4-mini-reasoning 3.8B在VSCode中的智能编程应用&#xff1a;Codex风格体验 1. 轻量级AI编程助手的惊艳表现 在编程领域&#xff0c;AI辅助工具正变得越来越重要。Phi-4-mini-reasoning 3.8B作为一款轻量级模型&#xff0c;在VSCode中展现出了令人惊喜的智能编程能力。虽…...

蓝桥杯10天备战-day3基础算法

二分&#xff1a;int xxlower_bound(a,an,x)-a;返回>x的指针&#xff0c;减去a才是下标int yyupper_bound(a,an,x)-a;二分万能模板&#xff1a;#include<bits/stdc.h> using namespace std; #define int long long int a[10000]; int n, m; bool isblue(int mid) {if …...

【C# .NET 11 AI推理加速权威指南】:5大零拷贝内存优化+3层GPU绑定策略,实测吞吐提升4.7倍(含微软内部验证数据)

第一章&#xff1a;C# .NET 11 AI推理加速安全性最佳方案总览.NET 11 引入了原生 AI 推理加速支持与深度安全增强机制&#xff0c;为 C# 开发者构建高性能、可验证、低延迟的 AI 应用提供了统一平台。其核心围绕 ONNX Runtime 集成优化、硬件加速抽象层&#xff08;HAL&#xf…...

快速搭建个人医疗助手:MedGemma 1.5从零到一,支持症状分析和建议

快速搭建个人医疗助手&#xff1a;MedGemma 1.5从零到一&#xff0c;支持症状分析和建议 1. 项目背景与价值 在医疗信息咨询需求日益增长的今天&#xff0c;一个能够提供专业、可靠且保护隐私的医疗问答系统显得尤为重要。MedGemma 1.5正是为解决这一需求而设计的本地化医疗A…...