Java面向对象(1)
static静态变量
public class Student {static String name;private double score;public Student(){};public Student(double score) {this.score = score;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}
}
public class test {public static void main(String[] args) {Student.name="刘";Student s1=new Student();s1.name="马";Student s2=new Student();s2.name="秋";System.out.println(Student.name);}
}//秋
static只有一个变量,所以修改别的类中的变量,所以的name都会变化。
应用场景
比如系统的中统计用户的个数,在每次用户类中的构造函数中++。
public class User {public static int num;//初始为0public User(){User.num+=1;}
}
public class test {public static void main(String[] args) {User u1=new User();User u2=new User();User u3=new User();User u4=new User();User u5=new User();User u6=new User();System.out.println(u1.num);}
}
//输出 6
public class LoginDemo {public static void main(String[] args) {String code="";String data="qwertyuiopasdfghjklzxcvbnm";Random r=new Random();for(int i=0;i<4;++i){int t=r.nextInt(data.length());code+=data.charAt(t);}System.out.println(code);}
}
public class RegisterDemo {public static void main(String[] args) {String code="";String data="qwertyuiopasdfghjklzxcvbnm";Random r=new Random();for(int i=0;i<4;++i){int t=r.nextInt(data.length());code+=data.charAt(t);}System.out.println(code);}
}
上述两个代码可以改成如下:
public class MyUtil {public static String createCode(int n) {String code="";String data="qwertyuiopasdfghjklzxcvbnm";Random r=new Random();for(int i=0;i<n;++i){int t=r.nextInt(data.length());code+=data.charAt(t);}return code;}
}
public class LoginDemo {public static void main(String[] args) {System.out.println(MyUtil.createCode(4));}
}
public class RegisterDemo {public static void main(String[] args) {System.out.println(MyUtil.createCode(5));}
}
这样就会简洁很多。
在MyUtil中加入private MyUtil(){};后,这样可以防止别的代码中创建MyUtil类。
静态代码块
public class Student {static int num;static {System.out.println("静态代码块执行了");}
}
public class Test {public static void main(String[] args) {System.out.println(Student.num);System.out.println(Student.num);}
}
//输出
//静态代码块执行了
//0
//0
静态代码块只有在创建的第一次会执行。一般用来对类变量进行初始化赋值。
实例代码块
public class Student {public Student(){System.out.println("无参构造函数执行了");}public Student(String name){System.out.println("有参构造函数执行了");}{System.out.println("实例代码块执行了");}
}
public class Test {public static void main(String[] args) {Student stu=new Student();}
}
//输出
实例代码块执行了
无参构造函数执行了
单例模式
饿汉式单例
在还没有创建对象的时候就自己创建了
public class A {private static A a=new A();private A(){}public static A getObject(){return a;}
}
public class Test {public static void main(String[] args) {A a1=A.getObject();A a2=A.getObject();System.out.println(a1);System.out.println(a2);}
}
//输出
com.peng.test.single.A@4eec7777
com.peng.test.single.A@4eec7777
懒汉式单例
只有创建对象的时候才会创建,并且只能有一个对象
//懒汉式单例
public class B {private static B b;private B(){}public static B getInstance(){if(b==null){b = new B();}return b;}
}
public class Test {public static void main(String[] args) {B b1=B.getInstance();B b2=B.getInstance();System.out.println(b1);System.out.println(b2);}
}
//输出
com.peng.test.single.B@4eec7777
com.peng.test.single.B@4eec7777
继承
继承不能继承多个,但是可以多层。
任何类都默认继承Object类,
public class A {public int i;public void printi(){System.out.println("公共的可以继承");}private int j;private void printj(){System.out.println("私有的不可以继承");}}
public class B extends A {public void printb(){i=0;System.out.println(i);printi();}
}
继承的应用
public class people {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}
public class teacher {private int salary;public int getSalary() {return salary;}public void setSalary(int salary) {this.salary = salary;}
}
public class student {private String subject;public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}
}
public class Test {public static void main(String[] args) {teacher t=new teacher();t.setName("刘");t.setSalary(100);System.out.println(t.getName());System.out.println(t.getSalary());}}
//输出
刘
100
修饰符
方法重写
重写的前面要加上@Override,便于理解。
继承变量中会就近原则。如果非要访问父类的变量,就用super来访问。
public class people {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public void print_people(){System.out.println("1111");}
}
public class teacher extends people{private int salary;public int getSalary() {return salary;}public void setSalary(int salary) {this.salary = salary;}@Overridepublic void print_people(){System.out.println("66666");}
}
public class Test {public static void main(String[] args) {teacher t=new teacher();t.print_people();}
}
相关文章:

Java面向对象(1)
static静态变量 public class Student {static String name;private double score;public Student(){};public Student(double score) {this.score score;}public double getScore() {return score;}public void setScore(double score) {this.score score;} }public class t…...

【计算机毕业设计】基于SpringBoot+Vue金融产品销售系统的设计与实现
博主主页:一季春秋博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容:毕业设计(Java项目、小程序、安卓等)、简历模板、学习资料、…...
【面试题精讲】Mysql如何实现乐观锁
❝ 有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top ❞ 首发博客地址 文章更新计划 系列文章地址 在 MySQL 中,可以通过使用乐观锁来实现并发控制,以避免数据冲突和并发更新问…...

从零开始搭建java web springboot Eclipse MyBatis jsp mysql开发环境
文章目录 1 第一步软件安装1.1 下载并安装Eclipse1.2 下载并安装Java1.3 下载并安装Apache Maven1.4 下载并安装MySQL 2 创建所需要的表和数据3 创建Maven 工程、修改jdk4 通过pom.xml获取所需要的jar包5 安装Eclipse的MyBatis插件6 创建文件夹以及jsp文件7 创建下面各种java类…...
【VsCode】整理代码
在VsCode中,你可以使用插件"Beautify"来格式化你的HTML代码,使其更加整齐清晰。而对于JSON代码,你可以使用"vscode-json"插件来格式化为易读的树状结构,方便查看和编辑。这些插件可以帮助你更加高效地整理HTM…...

盘点总结汇总植物病虫害、人体疾病识别相关的项目实践
在前面的很多项目中做了许多有关于植物病虫害比如:苹果病虫害、番茄病虫害、小麦病虫害、辣椒病虫害、白菜病虫害、木薯病虫害、葡萄病虫害、柑橘病虫害等等,还有一些是有关于人体疾病识别相关的,比如:病理细胞识别、癌症识别、皮…...

【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(2)· 正交表 · 场景设计 · 常见案例练习
【测试开发】用例篇(2) 文章目录 【测试开发】用例篇(2)1. 正交表法1.1 什么是正交表1.2 两个重要概念1.3 如何通过正交表设计测试用例1.3.1 充分理解需求1.3.2 确定因素、确定水平1.3.3 allpairs画正交表1.3.4 补充正交表1.3.5 将…...
【ES】笔记-数值扩展
数值扩展 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>数值扩展</title> </head> &l…...
浅谈Rust内存管理
Rust因在内存管理上的独到之处,近年来受到了不少开发者的青睐。Rust内存管理的核心功能就是所有权。不同的语言采取了不同的内存管理方式,主要分为开发者手动管理或者编译器辅助管理,以及垃圾回收机制等。Rust的所有权机制,有别于…...
Vue路由跳转至页面后多次渲染
在 Vue 中,当你跳转到一个新的路由或者重新加载当前路由时,由于 Vue Router 或其他路由管理工具的机制,会导致该页面组件重新渲染多次的情况发生。这可能是因为以下原因: 组件复用:Vue Router 默认情况下会尝试复用已经…...

CDH大数据平台集群部署
文章目录 1. 资源准备2. 部署 Mariadb 数据库3. 安装CM服务4. 安装数据节点5. 登录CM系统 1. 资源准备 准备好CDH安装包资源,官方网站下载需要账号,如果没有账号可以去网上到处搜搜。主要涉及到的资源有: cloudera-manager-servercloudera-m…...

基于springboot+vue的校园资产管理系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
@RequestMapping 注解使用技巧
一、RequestMapping 基础用法 用于将任意HTTP 请求映射到控制器方法上。 RequestMapping表示共享映射,如果没有指定请求方式,将接收GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT所有的HTTP请求方式。GetMapping、PostMapping、PutMapp…...
AtCoder 265G 线段树
题意 传送门 AtCoder 265G 012 Inversion 题解 直接维护逆序对数量比较困难,考虑到元素值域很小,直接将不同数值对解耦进行维护。具体而言,线段树维护区间 0 , 1 , 2 0,1,2 0,1,2 的数量,以及满足 i < j i<j i<j 时…...

通俗易懂了解大语言模型LLM发展历程
1.大语言模型研究路程 NLP的发展阶段大致可以分为以下几个阶段: 词向量词嵌入embedding句向量和全文向量理解上下文超大模型与模型统一 1.1词向量 将自然语言的词使用向量表示,一般构造词语字典,然后使用one-hot表示。 例如2个单词&…...
Vim - 快速插入C语言函数注释模板
背景 C语言使用vim编写时,需要快速对函数进行说明头插入; 代码 function! InsertCFunctionHeader()" 获取当前行内容let line getline(.)" 匹配 C 函数定义let matched matchlist(line, ^\s*\w\ \\(\w\\)(\(.*\)))" 如果当前行不是函…...

Leetcode171. Excel 表列序号
给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如: A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ... 题解:力扣(LeetCode)官网 - 全球极客挚爱…...
自主设计,模拟实现 RabbitMQ - 实现 拒绝/否定 应答机制
目录 一、拒绝/否定 应答机制 1.1、需求分析 什么是 拒绝/否定 应答呢?...

在github上设置不同分支,方便回滚
在github上设置不同分支,方便回滚 步骤可能出现的问题couldnt find remote ref gpuVersion1. 确保您处于正确的分支2. 添加并提交更改(如果还未进行)3. 推送本地分支到远程仓库4. 验证操作 步骤 之前在github上上传了一个项目代码,…...

【Elsevier旗下】JCR2/3区,最快25天录用!计算机与娱乐、教育、游戏、新媒体均可
期刊简介: 出版社:Elsevier 影响因子(2022):2.5-3.0 期刊分区:JCR2/3区,中科院4区 检索数据库:SCIE 在检 数据库检索年份:2016年 预警情况:无中科院预警…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...