Java基础第五章、面向对象程序设计
1.package包
如果引入的不同包里面有相同的类名时,需要对要使用的类进行完整的限定名指定。
2.访问修饰符
子类对父类的方法重写也遵循上面的原则
一个java文件中最多只能有一个public(和文件同名)的类。
3.初始化块
//Driver.java
public class Driver {private long licenceNo;private String name;private int year;//初始化块,编译器会将块中代码编入每一个构造器的开头{System.out.println("Init licenceNo.");licenceNo=System.currentTimeMillis();}public Driver(String name, int year) {this.name = name;this.year = year;}public long getLicenceNo() {return licenceNo;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getYear() {return year;}public void setYear(int year) {this.year = year;}public void introduce(){System.out.println("licenceNo:"+licenceNo);System.out.println("Name:"+name);System.out.println("year:"+year);}
}
//Game.java
public class Game {public static void main(String[] args) {Driver driver1=new Driver("Tom",26);driver1.introduce();}
}
初始化执行顺序:
成员变量->初始化块->构造器
4.static关键字
类初始化执行顺序:
类变量(静态变量)->静态初始化块
5.final关键字
修饰方法时,方法无法被重写
final修饰引用类型变量(只能保证引用类型变量所引用的地址不变)
6.抽象类
抽象类:
子类Car:
子类Motorbike:
若子类是抽象类,可以不重写实现父类的抽象方法:
抽象类无法被实例化:
7.接口
default方法需要有个默认方法,需要写方法体
接口定义:
接口实现:
测试:
示例:灵活扩展
面向接口编程:
抽象类和接口对比:
8.内部类
(1)非静态内部类
非静态内部类代码:
public class OuterFirst {private int width = 1024;public void print(){Inner inner=new Inner(1920,1080);//外部类调用内部类方法inner.print();//外部类调用内部类成员变量System.out.println("Outer visit Inner width:"+inner.width);System.out.println("Outer visit Inner height:"+inner.height);}static{//静态块中无法访问非静态内部类}public static void show(){//静态方法中无法访问非静态内部类}//非静态内部类public class Inner{//不可以定义静态成员、静态块、静态方法private int width;private int height;public Inner(int width,int height){this.width=width;this.height=height;}public void print(){//访问内部类成员变量System.out.println("Inner width:"+this.width);System.out.println("Inner height:"+this.height);//访问外部类成员变量System.out.println("Inner visit Outer width:"+OuterFirst.this.width);}}
}
调用演示:
public class InnerDemo {public static void main(String[] args) {//访问非静态内部类//实例化Inner类(通过外部类的实例)OuterFirst.Inner finner=new OuterFirst().new Inner(1920,1080);finner.print();}
}
(2)静态内部类
(3)局部内部类(使用场景很少)
(4)匿名内部类(使用场景比较有特色,例如比较器)
9.枚举类
枚举中定义的各个类型中其实是枚举类的各个实例(比如说这里的MALE和FEMALE)
(1).枚举类如何实现接口
//定义枚举类
public enum Season {SPRING, SUMMER, FALL, WINTER;
}
//使用枚举类
public class EnumDemo {public static void main(String[] args) {//单独使用printSeasonWord(Season.SPRING);printSeasonWord(Season.SUMMER);System.out.println("遍历枚举类中所有的值:");//遍历枚举类中所有的值for(Season value:Season.values()){printSeasonWord(value);}}public static void printSeasonWord(Season season){switch (season){case SPRING:System.out.println("春天:万物复苏");break;case SUMMER:System.out.println("夏天:烈日炎炎");break;case FALL:System.out.println("秋天:硕果累累");break;case WINTER:System.out.println("冬天:白雪皑皑");break;}}
}
定义构造方法的枚举类:
public enum Direction {//设置构造器以后需要使用指定的构造器EAST("东"),SOUTH("南"),WEST("西"),NORTH("北");private final String name;//设置构造器Direction(String name) {this.name = name;}//访问私有变量的方法public String getName(){return this.name;}
}
使用枚举类:
//直接使用枚举类中实例的方法
System.out.println("Direction getName:"+Direction.EAST.getName());
System.out.println("遍历Direction枚举类中所有的值:");
for(Direction direction:Direction.values()){System.out.println("Direction Name:"+direction.getName());
}
枚举类实现接口示例:
方式一:通过Switch对实例进行判断并输出
public enum Gender implements Printer{MALE,FEMALE;@Overridepublic void printer() {switch (this){case MALE:System.out.println("男");break;case FEMALE:System.out.println("女");break;}}
}interface Printer{void printer();
}
//调用测试
System.out.println("枚举类实现定义的接口:");
Gender.MALE.printer();
Gender.FEMALE.printer();
方式二:直接通过实例的内部去分别实现
MALE(){@Overridepublic void printer() {System.out.println("男");}
},FEMALE(){@Overridepublic void printer() {System.out.println("女");}
};
(2).枚举类实现抽象方法
public enum State {ON(){@Overridepublic void print() {System.out.println("开关打开!");}},OFF(){@Overridepublic void print() {System.out.println("开关关闭!");}};public abstract void print();
}
//调用测试
System.out.println("枚举类实现抽象方法:");
State.ON.print();
State.OFF.print();
10.引用类型数组(数组中存放的地址)
示例代码:
public class ReferenceDemo {public static void main(String[] args) {//静态初始化引用类型数组CarsCar[] cars = {new Car("奔驰"),new Car("宝马"),new Car("奥迪")};for (Car car : cars) {car.run();}//动态初始化引用类型数组DriversDriver[] drivers = new Driver[3];drivers[0] = new Driver("Tom");drivers[1] = new Driver("Amy");drivers[2] = new Driver("Daming");for (Driver driver : drivers) {driver.introduce();}}
}class Car {private String brand;public Car(String brand) {this.brand = brand;}public void run() {System.out.println("brand:" + brand);}
}class Driver {private String name;public Driver(String name) {this.name = name;}public void introduce() {System.out.println("My name is " + name);}
}
11.方法区
12.垃圾回收机制
相关文章:
Java基础第五章、面向对象程序设计
1.package包 如果引入的不同包里面有相同的类名时,需要对要使用的类进行完整的限定名指定。 2.访问修饰符 子类对父类的方法重写也遵循上面的原则 一个java文件中最多只能有一个public(和文件同名)的类。 3.初始化块 //Driver.java public class Driver {private lo…...
RD电子实验记录本选用贴士A-B-C
传统的实验记录本,令人又爱又恨本 如何挑选电子实验室记录本(ELN)的品牌/服务商/供应商? 电子实验记录本,又名为ELN,Electronic lab notebook,enotebook,研发电子管理系统…...
Python 第 11 节课 - string 与 random 的方法
- 第 93 篇 - Date: 2025 - 04 - 26 Author: 郑龙浩/仟墨 【Python 在校课堂笔记】 Python 第 11 节课 - string 与 random 的方法 上课时间: 2025-04-14 文章目录 Python 第 11 节课 - string 与 random 的方法一 string 的方法1 s.split()2 s.find()3 s.replace()4 s.strip…...
proxychains4系统代理for linux(加速国内github下载速度,pip安装)
1.proxychains4代理安装: sudo apt-get install proxychains42.找到配置文件/etc/proxychains4.conf在[ProxyList]后面添加以下内容: socks5 127.0.0.1 10808 配置如下: 3.使用proxychains4(git clone): proxychains4 git c…...
LLM基础之源码一
transformers 核心源码梳理 Trainer部分: __init__() 初始化函数: def __init__(xxx):if args is None:output_dir "tmp_trainer"args TrainingArguments(output_diroutput_dir) self.args argsself.compute_loss_func compute_loss_fun…...
蛮荒tv桌面永不升级版app下载-蛮荒桌面安卓电视版下载
蛮荒桌面是一款具有丰富桌面内容的生活应用软件,可以连接电视上使用,用户将需要的软件添加到桌面上,系统就会自动分类管理软件,小编今天为大家推荐一款功能更大强大的电视桌面应用——乐看家桌面。 乐看家桌面功能亮点: 1.官网下载刷入机顶盒…...
2025蓝桥省赛c++B组第二场题解
前言 这场的题目非常的简单啊,至于为什么有第二场,因为当时河北正在刮大风被迫停止了QwQ,个人感觉是历年来最简单的一场,如果有什么不足之处,还望补充。 试题 A: 密密摆放 【问题描述】 小蓝有一个大箱子࿰…...
c#简易超市充值卡程序充值消费查余额
开发背景 本软件是给克什克腾旗某公司开发的一个简易的超市充值卡程序 # 功能 1、充值卡的充值、消费、查询余额 github下载:https://github.com/oyangxizhe/cash.git...
使用FME生成Delaunay三角形
目录 背景与应用场景 前置条件与数据准备 操作流程详解 3.1 点要素矢量化3.2 设置坐标系3.3 生成Delaunay三角形...
三款实用工具推荐:图片无损放大+音乐格式转换+音视频格式转换!
在这个数字化时代,总有些工具能让人眼前一亮。今天李师傅大家精选三款实用工具,从图片优化到格式转换,解决日常创作中的痛点,让数字生活更得心应手。 在这个数字化时代,总有些工具能让人眼前一亮。今天为大家精选三款…...
文本预处理(NLTK)
1. 自然语言处理基础概念 1.1 什么是自然语言处理 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于…...
泰迪杯实战案例学习资料:生产线的故障自动识别和人员配置优化
(西南石油大学,第十二届泰迪杯特等奖案例) (深度扩展版) 一、案例背景与目标 1.1 问题背景 在制造业中,生产线设备故障可能导致以下问题: 停机损失:每小时停机成本可达数万元(视行业而定)。 资源浪费:人工排班不合理导致高技能员工闲置或低效分配。 安全隐患:未及…...
dijkstra
open_set是当前正在计算的节点; 每次从当前open_set集合中找出cost最小的节点进行计算更新:从open_set中去除该节点,保存到close_set中; 运动更新可以根据运动模型选择合适的节点运动方式; 【代价的计算方式是&…...
【SSH 端口转发】通过SSH端口转发实现访问远程服务器的 tensorboard
SSH 连接远程服务器时的命令: ssh -L 8001:localhost:8001 usrnameserverip-L: 这是指定进行本地端口转发的选项。也就是说,要将本地机器的一个端口通过 SSH 隧道转发到远程服务器上的某个服务。 8001:localhost:8001: 第一个 80…...
w308汽车销售系统的设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
Spring 学习笔记之 @Transactional 异常不回滚汇总
使用springboot时,只要引入spring-jdbc/jpa相关的依赖后,在想要启用事务的方法上加上Transactional注解就能开启事务,碰到异常就能自动回滚。大大的提高了编码的便捷性性,同时也不侵入代码,保持了代码的简洁性。 默认情…...
Java 自定义TCP协议:【特点编码字符串<=>字节<=>特点编码16进制】16进制字符串和编码的转换 (各种编码通过字节向16进制的互转)| XOR计算
文章目录 引言I 各种编码通过字节向16进制的互转。字符串<=>字节<=>16进制 | Java验证微信小程序 JavaScript字符串转gb2312 字符编码,以16进制字符串传输。(接收蓝牙设备的信息,发送北斗终端消息)II xor校验码Java实现验证C# 实现引言 为了避免中文在传输过程…...
大模型的使用
以下是不同类型大模型及其适用场景: 对话模型 - 代表模型:GPT-3.5/4、Claude、LaMDA、ChatGLM等。 - 适用场景:客服机器人为用户解答常见问题,提供实时支持;个人助理帮助用户完成各种任务,如查询信息、设置…...
OSPF的不规则区域和特殊区域
目录 一、OSPF不规则区域类型 1、非骨干区域无法和骨干区域保持连通 2、骨干区域被分割 解决方案 1、使用虚连接 2、使用多进程双向重发布(路由引入) 二、特殊区域 1、STUB区域(末梢区域) 2、totally stub区域(…...
C++学习:六个月从基础到就业——STL:分配器与设计原理
C学习:六个月从基础到就业——STL:分配器与设计原理 本文是我C学习之旅系列的第三十篇技术文章,也是第二阶段"C进阶特性"的第九篇,主要介绍C STL中的分配器设计原理与实现。查看完整系列目录了解更多内容。 引言 在之前…...
QQMusic项目功能总结
QQMusic项目功能总结 一、核心功能分类 (一)界面交互功能 功能模块实现方式使用类(自定义/Qt库)核心类说明窗口布局Head区(图标、搜索框、控制按钮) Body区(左侧功能栏右侧页面区)…...
人形机器人:MCP与人形机器人的联系
MCP(Model Context Protocol)与人形机器人的结合,正在重构智能体与物理世界的交互范式。这种联系不仅体现在技术架构的深度融合,更体现在对机器人认知能力、协作模式和应用场景的全方位赋能。以下从技术整合、场景落地和未来趋势三…...
matplotlib画图工具使用(1) 画折线统计图python代码
Python 画折线统计图(line chart)最常用的是 matplotlib。 最基本的折线图代码如下: import matplotlib.pyplot as plt# 假设这是你的数据 x [1, 2, 3, 4, 5] y [2, 3, 5, 7, 11]# 创建折线图 plt.plot(x, y, markero) # markero 是在点…...
神经网络与深度学习第四章-前馈神经网络
前馈神经网络 在本章中,我们主要关注采用误差反向传播来进行学习的神经网络。 4.1 神经元 神经元是构成神经网络的基本单元。主要是模拟生物神经元的结构和特性,接收一组输入信号并产生输出。 现代神经元中的激活函数通常要求是连续可导的函数。 净输…...
TC3xx学习笔记-UCB BMHD使用详解(一)
文章目录 前言UCB BMHDPINDISHWCFGLSENA0-3LBISTENACHSWENABMHDIDSTADCRCBMHDCRCBMHD_NPW0-7 总结 前言 AURIX Tc系列Mcu启动过程,必须要了解BMHD,本文详细介绍BMHD的定义及使用过程 UCB BMHD UCB表示User Configuration Block,UCB是Dflash,存储的地址…...
C语言 函数递归
目录 1.什么是递归 2.递归的限制条件 3.递归的举例 1.递归与迭代 1.递归是什么 递归是学习C语言函数绕不开的一个话题,那什么是递归呢? 递归其实是一种解决问题的方法,在C语言中,递归就是函数自己调用自己。 写一个史上最简单的C语言…...
4月25日日记(补)
最近实在是忙的不行了,做不到一天一更,但是实际上只需要每天拿出十分钟就可以写一篇不错的随笔或者说日记,我还是有点倦怠了。 昨天是4月25,我的生日,但是依旧是很忙碌的一天。零点准时拆了朋友们送的礼物,…...
【股票系统】使用docker本地构建ai-hedge-fund项目,模拟大师炒股进行分析。人工智能的对冲基金的开源项目
股票系统: https://github.com/virattt/ai-hedge-fund 镜像地址: https://gitcode.com/gh_mirrors/ai/ai-hedge-fund 项目地址: https://gitee.com/pythonstock/docker-run-ai-hedge-fund 这是一个基于人工智能的对冲基金的原理验证项目。本项目旨在探讨利用人工智能进行…...
Ollama平替!LM Studio本地大模型调用实战
本文已收录在Github,关注我,紧跟本系列专栏文章,咱们下篇再续! 🚀 魔都架构师 | 全网30W技术追随者🔧 大厂分布式系统/数据中台实战专家🏆 主导交易系统百万级流量调优 & 车联网平台架构&a…...
2024江西ICPC部分题解
题目列表 A - Maliang Learning PaintingC - LiarG - Multiples of 5H - ConvolutionJ - Magic MahjongK - Magic Tree A - Maliang Learning Painting 题目来源:A - Maliang Learning Painting 思路分析 这是个签到题,直接输出abc即可 #include<b…...
RabbitMQ安装流程(Windows环境)
1.下载依赖,Downloads - Erlang/OTP 2.下载RabbitMQ安装包,Installing on Windows | RabbitMQ 3.下载的文件如下 4.安装ErLang依赖 5.安装RabbitMQ 6.RabbitMQ插件管理 6.1 进入Command Prompt命令行界面 6.2 输入rabbitmq-plugins.bat list 查看所有插…...
QT对话框及其属性
Qt中使用QDialog类表示对话框 对话框是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互 QDialog也是继承自QWidget,可以使用QWidget接口 Qt常用的内置对话框有: 对话框 说明 QFiledialog 文件对话框 QColorDialog 颜色对话框 …...
python怎么查看函数原型及变量是什么类型
python代码中看到一个变量或者对象名,怎么查看这个变量到底是个什么东西,是属性,还是函数,还是模块,还是个包,怎么去查看,要有一个查找流程: 1.可以先用print(变量名)和print(type(变量名)),确认变量是什么类型的参数 2.如果是模块或者类,可以通过dir()函数去查看模…...
住宅代理IP助力大规模数据采集实战
在数字化时代,数据就是燃料,而大规模数据采集则是从信息海洋中提炼价值的关键手段。面对目标网站的严格风控和地域限制,普通代理车轮战往往难以为继——流量一旦被识破,便可能付之东流。这时,住宅代理IP凭借来自真实家…...
【信息融合】卡尔曼滤波EKF毫米波雷达和红外数据信息融合
一、扩展卡尔曼滤波(EKF)的核心原理 EKF是针对非线性系统的改进卡尔曼滤波算法,其核心思想是通过一阶泰勒展开对非线性方程进行局部线性化,并利用雅可比矩阵(Jacobian Matrix)替换线性系统中的状态转移矩阵…...
一篇入门之-评分卡变量分箱(卡方分箱、决策树分箱、KS分箱等)实操例子
一、评分卡分箱-有哪些分箱方法 评分卡的分箱,是指将变量进行离散化。评分卡的分箱方法一般有:等频分箱、等距分箱、卡方分箱、决策树分箱、KS分箱等等。它们都属于自动分箱方法,其中,卡方分箱是实际中最常用的分箱方法。 1.1.等…...
【白雪讲堂】构建与优化企业知识图谱的实战指南
在GEO(生成式引擎优化)时代,知识图谱不仅是企业数据资产的“智慧大脑”,更是连接内容与AI理解之间的核心桥梁。一个高质量的知识图谱,能够显著提高AI平台对企业内容的识别度、相关性与推荐权重,从而在AI搜索…...
作为高速通道光纤传输模式怎么理解以及到底有哪些?
光纤的传输模式主要取决于光纤的结构(如纤芯直径和折射率分布),不同模式对应光波在光纤中传播的不同路径和电磁场分布。以下是光纤传输模式的主要分类及特点: 1. 单模光纤(Single-Mode Fiber, SMF) 核心特点: 纤芯直径极小(通常为 8-10微米),仅允许光以单一模式(…...
setup语法糖
为什么要有setup语法糖: 在选择式API中,一个模块涉及到的数据、方法、声明周期,会比较分撒,位置不集中,不利于解读代码,但是组合式API中的setup函数可以将他们组织在一起,提高了代码的可维护性…...
linux socket编程之tcp(实现客户端和服务端消息的发送和接收)
目录 一.创建socket套接字(服务器端) 二.bind将port与端口号进行绑定(服务器端) 2.1填充sockaddr_in结构 2.2bind绑定端口 三.建立连接 四.获取连接 五..进行通信(服务器端) 5.1接收客户端发送的消息 5.2给客户端发送消息 5.3引入多线程 六.客户端通信 6.1创建socke…...
Spring和Spring Boot集成MyBatis的完整对比示例,包含从项目创建到测试的全流程代码
以下是Spring和Spring Boot集成MyBatis的完整对比示例,包含从项目创建到测试的全流程代码: 一、Spring集成MyBatis示例 1. 项目结构 spring-mybatis-demo/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com.example/…...
Beta-VAE背景原理及解耦机制分析
Beta-VAE背景原理及解耦机制分析 论文链接:https://openreview.net/forum?idSy2fzU9gl¬eIdSy2fzU9gl 一、Beta-VAE的核心思想 Beta-VAE 是一种改进的变分自编码器(VAE),旨在通过调整潜在变量的独立性来增强模型的解耦能…...
用c语言实现——一个动态顺序存储的串结构
一、思路概要 ①动态顺序存储的串结构: 动态应该使用动态内存分配,也就是用指针来存储字符数组,同时记录长度和当前容量。 这样结构体应该包含三个成员:一个char*指针,一个int表示当前长度,另一个int表示…...
小程序Npm package entry file not found?
修改依赖包的入口文件 看是不是cjs,小程序不支持cjs...
vue3学习之防抖和节流
在前端开发中,我们经常会遇到这样的情况:某些事件(如滚动、输入、点击等)会频繁触发,如果不加以控制,可能会导致性能问题。Vue3 中的防抖(Debounce)和节流(Throttle&a…...
当高级辅助驾驶遇上“安全驾校”:NVIDIA如何用技术给无人驾驶赋能?
高级辅助驾驶技术的商业化落地,核心在于能否通过严苛的安全验证。国内的汽车企业其实也在做高级辅助驾驶,但是吧,基本都在L2级别。换句话说就是在应急时刻内,还是需要人来辅助驾驶,AI驾驶只是决策层,并不能…...
Linux | Mfgtools 修改单独只烧写 Uboot,内核,文件系统
01 1. 打开 mfgtools_for_6ULL 文件夹,找到 cfg.ini 文件,如果您的板子是 EMMC 的修改如下图: 如果您的板子是 NAND 的,修改如下图: 02 2. 打开“Pro...
【Agent python实战】ReAct 与 Plan-and-Execute 的融合之道_基于DeepSeek api
写在前面 大型语言模型(LLM)驱动的 Agent 正在从简单的任务执行者向更复杂的问题解决者演进。在 Agent 的设计模式中,ReAct (Reason + Act) 以其步步为营、动态适应的特性见长,擅长处理需要与环境实时交互、快速响应的任务。而 Plan-and-Execute 则强调前瞻性规划,先制定…...
Native层Trace监控性能
一、基础实现方法 1.1 头文件引用 #include <utils/Trace.h> // 基础版本 #include <cutils/trace.h> // 兼容旧版本1.2 核心宏定义 // 区间追踪(推荐) ATRACE_BEGIN("TraceTag"); ...被监控代码... ATRACE_END();// 函数级自…...
【C++】15. 模板进阶
1. 非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。 非类型形参:就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当…...