[java基础]面向对象(五)
访问控制修饰符:--------------保护数据的安全(隐藏数据、暴露行为),实现封装
-
public:公开的,任何类
-
private:私有的,本类
-
protected:受保护的,本类、派生类、同包类
-
默认的:什么也不写,本类、同包类--------------------------java不建议
注意:
-
访问权限由低到高依次为:private<默认的<protected<public
-
类的访问权限只能是public或默认的,类中成员的访问权限如上4种都可以。
-
package ooday05;
public class Aoo {public int a; //任何类protected int b; //本类、派生类、同包类int c; //本类、同包类private int d; //本类void show(){a = 1;b = 2;c = 3;d = 4;}
}class Boo{ //-------------------演示privatevoid show(){Aoo o = new Aoo();o.a = 1;o.b = 2;o.c = 3;//o.d = 4; //编译错误}
}package ooday05_vis;
import ooday05.Aoo;
public class Coo { //-------------------演示同包的void show(){Aoo o = new Aoo();o.a = 1;//o.b = 2; //编译错误//o.c = 3; //编译错误//o.d = 4; //编译错误}
}class Doo extends Aoo{ //跨包继承-------------演示protectedvoid show(){a = 1;b = 2; //编译错误//c = 3; //编译错误//d = 4; //编译错误}
}
final:最终的、不能改变的------------单独应用几率低
-
修饰变量:变量不能被改变
//演示final修饰变量
class Eoo{final int num = 5;void show(){//num = 55; //编译错误,final的变量不能被改变}
}
修饰方法:方法不能被重写
class Foo{final void show(){}void test(){}
}
class Goo extends Foo{//void show(){} //编译错误,final的方法不能被重写void test(){}
}
修饰类:类不能被继承
final class Hoo{}
//class Ioo extends Hoo{} //编译错误,final的类不能被继承
class Joo{}
final class Koo extends Joo{} //正确,不能当老爸,但能当儿子
static:静态的
静态变量:
-
由static修饰
-
属于类,存储在方法区中,只有一份
-
常常通过类名点来访问
-
何时用:对象所共享的数据
public class StaticVar {int a; //实例变量static int b; //静态变量StaticVar(){a++;b++;}void show(){System.out.println("a="+a+",b="+b);}
}public class StaticDemo {public static void main(String[] args) {StaticVar o1 = new StaticVar();o1.show();StaticVar o2 = new StaticVar();o2.show();StaticVar o3 = new StaticVar();o3.show();System.out.println(StaticVar.b); //常常通过类名点来访问}
}

静态块:
-
由static修饰
-
属于类,在类被加载期间自动执行,一个类只被加载一次,所以静态块也只执行一次
-
何时用:初始化/加载静态资源/静态变量
public class StaticBlock {static{System.out.println("静态块");}StaticBlock(){System.out.println("构造方法");}
}public class StaticDemo {public static void main(String[] args) {StaticBlock o4 = new StaticBlock(); //加载类时自动执行静态块StaticBlock o5 = new StaticBlock();StaticBlock o6 = new StaticBlock();}
}
静态方法:
-
由static修饰
-
属于类,存储在方法区中,只有一份
-
常常通过类名点来访问
-
静态方法中没有隐式this传递,所以静态方法中不能直接访问实例成员(实例变量/实例方法)
-
何时用:方法的操作与对象无关(不需要访问对象的属性/行为)
public class StaticMethod {int a; //实例变量(对象来访问)--------------属于对象的static int b; //静态变量(类名来访问)-------属于类的//方法的操作与对象无关(不需要访问对象的属性/行为)//在say()中需要访问对象的属性a,所以认为say的操作与对象有关,不适合设计为静态方法void say(){System.out.println(a);}//在plus()中不需要访问对象的属性/行为,所以认为plus的操作与对象无关,可以设计为静态方法static int plus(int num1,int num2){int num = num1+num2;return num;}void show(){ //有隐式thisSystem.out.println(this.a);System.out.println(StaticMethod.b);}static void test(){ //没有隐式this//静态方法中没有隐式this传递//没有this就意味着没有对象//而实例变量a必须通过对象来访问//所以如下语句发生编译错误//System.out.println(a); //编译错误,静态方法中不能直接访问实例成员System.out.println(StaticMethod.b);}
}public class StaticDemo {public static void main(String[] args) {StaticMethod.test(); //常常通过类名点来访问}
}
static final常量:应用率高
-
必须声明同时初始化
-
常常通过类名点来访问,不能被改变
-
建议:常量名所有字母都大写,多个单词之间用_分隔
-
编译器在编译时,会将常量直接替换为具体的数,效率高
-
何时用:在程序运行过程中数据永远不变,并且经常使用
public class StaticFinalDemo {public static void main(String[] args) {System.out.println(Loo.PI); //常常通过类名点来访问//Loo.PI = 3.1415926; //编译错误,常量不能被改变//1)加载Loo.class到方法区中//2)静态变量num一并存储到方法区中//3)到方法区中获取num的值并输出System.out.println(Loo.num);//编译器在编译时会将常量直接替换为具体的数,效率高//相当于System.out.println(5);System.out.println(Loo.COUNT);}
}class Loo{public static int num = 5; //静态变量public static final int COUNT = 5; //常量(静态常量)public static final double PI = 3.14159;//public static final int NUM; //编译错误,常量必须声明同时初始化
枚举:
-
是一种引用数据类型
-
特点:枚举类型的对象数目是固定的,常常用于定义一组常量
-
所有枚举都继承自Enum类,其中提供了一组方法供我们使用
-
枚举的构造方法都是私有的
public enum Season {//表示Season的固定的4个对象,都是常量//public static final Season SPRING = new Season("春天","暖和");SPRING("春天","暖和"),SUMMER("夏天","热"),AUTUMN("秋天","凉爽"),WINTER("冬天","冷");private String seasonName;private String seasonDesc;Season(String seasonName, String seasonDesc) {this.seasonName = seasonName;this.seasonDesc = seasonDesc;}public String getSeasonName() {return seasonName;}public void setSeasonName(String seasonName) {this.seasonName = seasonName;}public String getSeasonDesc() {return seasonDesc;}public void setSeasonDesc(String seasonDesc) {this.seasonDesc = seasonDesc;}
}public class EnumDemo {public static void main(String[] args) {Season[] seasons = Season.values(); //获取所有枚举的对象for(int i=0;i<seasons.length;i++){System.out.println(seasons[i]); //输出4个枚举对象(SPRING、SUMMBER、AUTUMN、WINTER)System.out.println(seasons[i].getSeasonName()); //输出枚举的名字属性System.out.println(seasons[i].getSeasonDesc()); //输出枚举的描述属性}Season s = Season.WINTER; //获取SPRING对象System.out.println(s.getSeasonName()+","+s.getSeasonDesc());switch (s){case SPRING:System.out.println("天气"+s.getSeasonDesc()+",放风筝去喽!");break;case SUMMER:System.out.println("天气"+s.getSeasonDesc()+",游戏去喽!");break;case AUTUMN:System.out.println("天气"+s.getSeasonDesc()+"摘苹果去喽!");break;case WINTER:System.out.println("天气"+s.getSeasonDesc()+"打雪仗去喽!");break;}}
}
注:
-
数据(成员变量)私有化(private)、行为(方法)大部分公开化(public)
-
getter/setter:行业标准
-
重写的注意事项:派生类中重写方法的访问权限必须大于或等于超类方法的
-
匿名内部类中不能修饰外面局部变量的值,在匿名内部类该变量会默认为final的
-
成员变量分两种:
-
实例变量:没有static修饰,属于对象的,存储在堆中,有几个对象就有几份,通过引用/对象打点来访问
-
静态变量:有static修饰,属于类的,存储在方法区中,只有一份,通过类名打点来访问
-
- 工具类:
1)Math:数学工具类,里面封装了很多数学相关的静态方法/工具
2)Arrays:数组工具类,里面封装了很多数组相关的静态方法/工具
相关文章:
[java基础]面向对象(五)
访问控制修饰符:--------------保护数据的安全(隐藏数据、暴露行为),实现封装 public:公开的,任何类 private:私有的,本类 protected:受保护的,本类、派生类、同包类 默认的&…...
React应用(基于React脚手架)
目录 前言:一、使用create-react-app创建react应用1、什么是 react 脚手架?2. 创建 cli 脚手架方式13. 创建 cli 脚手架方式24. npx:5. react脚手架项目结构6. 功能界面的组件化编码流程(通用)7. 如何更改脚手架版本 二、React 组…...
Redis(03)List--附有示例
文章目录 reids-listBLMOVEBLMPOPBLPOPBRPOPBRPOPLPUSHLINDEXLINSERTLLENLMOVELMPOPLPOPLPOSLPUSHLPUSHXLRANGELREMLSETLTRIMRPOPRPOPLPUSHRPUSHRPUSHX reids-list 本文介绍了Redis中的表命令。LSET用于设置列表中指定索引位置的元素的值;LTRIM用于按照索引范围修剪…...
openEuler-linux下部署zabbix-超级详细
一、准备工作 下载:zabbix包 地址:下载Zabbix 准备2台openEuler-linux虚拟机: linux-1:当服务器端 IP地址:192.168.100.100 修改hosts文件 [rootzbx ~]# vim /etc/hosts 192.168.100.100 zbx.xx.cn linux-2&…...
nginx 简介 第四章
一、Nginx简介 1、Nginx简介 Nginx(特点:占用内存少,并发能力强) Nginx是一个高性能的 HTTP 和反向代理服务器。 Nginx是一款轻量级的 Web 服务器/反向代理服务器及电子邮件 单台物理服务器可支持30 000~50 000个并发…...
c++ float32 与 float16 互转
背景: 最近用到一块推理加速卡时,推理输入的数据是 float16 类型,而我们平常用到的数据是 float 类型,也就是 float32类型,这需要输入数据时float32 转 float16,解析输出数据时 float16 转 float。 参考&…...
Redis问题
一、认识Redis 1. 什么是 Redis? Redis 是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景。Redis 提供了多种数据类型来支持不同的业务场景&#…...
[API]ListList方法集合排序Lambda表达式(四)
List接口: 继承自Collection接口,List集合是可重复集合,并且有序,还提供了一套可以通过下标来操作元素的方法 常见的实现类: ArrayList:内部使用数组实现,查询性能更好(直接下标找到物理地址)、…...
【ChatGPT】无需魔法打开即用的 AI 工具集锦
作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。 热门文章推荐…...
Choco-slover的使用
一. 相关资料 choco-slover github源代码以及工具下载网址:https://github.com/chocoteam/choco-solverchoco-slover 官网文档:https://choco-solver.org/choco-slover安装eclipse视频:https://www.youtube.com/watch?v=qz6ATkEI_F8视频所采用的资源网址:https://drive.go…...
亚马逊、ebay、temu如何提升产品点击率?测评自养号解析
产品点击率对于店铺销售额的影响至关重要,尤其是在竞争越来越激烈的市场环境中,想要有销量和转化,提高产品listing点击率成为了非常关键的一环。 1. 产品主图 顾客浏览产品时,第一眼看到的就是主图,一张优质的主图更容…...
人工智能的前沿信息获取之使用谷歌学术搜索
谷歌学术是谷歌公司开发的一款专门针对学术搜索的在线搜索引擎[4],谷歌学术的网址为https://scholar.google.com,界面如图 6‑1所示。使用谷歌学术搜索可以检索会议或者期刊论文。只需要在检索框中输入关键字,然后点搜索按钮即可,…...
PHP快速入门06-类型转换
文章目录 前言一、关于类型转换1.1 自动类型转换1.2 显式类型转换 二、15个常用类型转化示例2.1 将字符串转换为整型2.2 将整型转换为字符串2.3 将浮点型转换为整型2.4 将整型转换为浮点型2.5 将布尔型转换为整型2.6 将整型转换为布尔型2.7 将字符串转换为浮点型2.8 将浮点型转…...
Motion Planning学习笔记一:配置空间、图、图搜索、图遍历
学习高飞博士的路径规划课程所总结的学习笔记。 目录 1、配置空间(Configuration Space, C-space) 2、图(Graphs) 3、图搜索(Graph Search Basis) 3.1、总体框架 3.2、两种基本的图遍历算法 3.3、启…...
C语言中如何判断大小端字节序?
大小端(Endian)是指多字节整数在内存中存储的方式。在计算机中,一个多字节整数由多个字节组成,而不同的机器和处理器在存储多字节整数时会有两种不同存储方式,分别为大端字节序和小端字节序。 以一个4字节整数0x12345…...
用spring-boot-starter实现事务的统一配置
一、前言 微服务架构下,多个微服务都需要事务操作,如果在每个微服务下都从头配置事务,将非常繁锁。事务配置具有高度的一致性,可以抽取出来,制作starter,在需要配置事务的服务中引入starter依赖即可。 采用…...
C语言中fopen的详细用法
fopen是C语言中用于打开文件的函数,其原型为: FILE *fopen(const char *filename, const char *mode); 其中,filename是要打开的文件名,mode是打开文件的模式。fopen函数返回一个指向FILE类型的指针,该指针指向打开的…...
C语言——学生信息管理系统(数组)
文章目录 一、前言二、目的三、框架1.菜单1.1主菜单1.2子菜单 2.流程图2.1总流程图2.2开始流程图2.3增加学生信息流程图2.4.删除学生信息流程图2.5修改学生信息流程图2.6查询学生信息流程图2.7对学生信息排序流程图 3.思路 四、代码五、演示视频 一、前言 因为最近是在赶进度总…...
【C语言】基础语法1:变量和数据类型
下一篇:运算符和表达式 ❤️🔥前情提要❤️🔥 欢迎来到C语言基本语法教程 在本专栏结束后会将所有内容整理成思维导图(结束换链接)并免费提供给大家学习,希望大家纠错指正。本专栏将以基础出发…...
linux安装和使用jekins
Jenkins详细安装配置部署--超详细_jenkins安装部署_宝贝富贵猪的博客-CSDN博客 1.安装JDK 2.获取安装包 下载页面:https://jenkins.io/zh/download/ 或者Index of /jenkins/redhat/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 3.安装Jenkins sud…...
LVGUI字体瘦身实战:如何为你的IoT设备定制一个超小的中文字体库
LGVUI字体瘦身实战:为IoT设备定制超小中文字体库的工程化解决方案 在嵌入式物联网设备开发中,每一KB的Flash和RAM都弥足珍贵。当你的智能温控器需要显示"当前温度:25℃"或者电子秤要呈现"净重:0.5kg"时&#…...
如何用PCL2启动器打造完美的Minecraft模组体验:从零到精通的完整指南
如何用PCL2启动器打造完美的Minecraft模组体验:从零到精通的完整指南 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 你是否厌倦了每次启动Minecraft都要手动配…...
【避坑指南】VSCode+EIDE+Keil混合开发环境:从零搭建到项目无缝迁移
1. 为什么需要VSCodeEIDEKeil混合开发环境? 作为一名嵌入式开发者,我深知Keil这个老牌IDE在开发效率上的痛点:代码补全弱、界面老旧、多窗口管理混乱。但直接完全迁移到VSCode又面临工程兼容性问题,特别是对传统AC5编译器的支持。…...
3分钟掌握猫抓扩展:轻松捕获网页视频的终极秘籍
3分钟掌握猫抓扩展:轻松捕获网页视频的终极秘籍 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过这样的情况࿱…...
从零构建团队技能仓库:结构化知识管理与VuePress实践
1. 项目概述:一个技能仓库的诞生与价值 最近在整理团队内部的技术资产时,我一直在思考一个问题:如何让那些散落在个人笔记、项目代码片段、会议纪要里的“隐性知识”和“最佳实践”沉淀下来,变成团队可复用、可传承的“显性资产”…...
从零构建专属大语言模型:Self-LLM开源项目全流程实践指南
1. 项目概述与核心价值最近在开源社区里,一个名为datawhalechina/self-llm的项目引起了我的注意。乍一看,这像是一个关于大语言模型(LLM)的仓库,但“self”这个前缀又让人浮想联翩。经过一段时间的深入研究和实践&…...
基于Circuit Playground Express与NeoPixel的四季交互灯光装置设计与实现
1. 项目概述与核心思路几年前,我在一个艺术展上看到一组悬挂在枯树枝上的玻璃瓶,里面装着会呼吸般变幻光线的LED灯,那种静谧又灵动的美感让我念念不忘。作为一个喜欢把代码和电路“藏”进生活场景里的硬件爱好者,我一直在琢磨如何…...
ElevenLabs情绪驱动API实战手册(2024企业级部署全链路):从F0曲线调制到微表情时序对齐
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs情绪驱动API核心架构与演进脉络 ElevenLabs 的情绪驱动 API 并非简单叠加情感标签的语音合成增强层,而是构建在多模态表征学习与实时声学参数调控双引擎之上的闭环系统。其核心架…...
基于BLE HID与旋转编码器打造双模式无线遥控器
1. 项目概述你有没有过这样的时刻:窝在沙发里看剧,想调个音量或者暂停一下,却不得不伸手去够茶几上的键盘或鼠标,打断那份沉浸的惬意?或者,在电脑上回味一些经典老游戏时,觉得用键盘移动、鼠标射…...
【仿真学习框架】HoloMotion 从入门到精通:全身人形控制 Foundation Model 完全指南
HoloMotion 从入门到精通:全身人形控制 Foundation Model 完全指南 目标读者:具身智能研究者、人形机器人开发者、RL/机器人学习工程师 目录 第1章 HoloMotion 全景概览 1.1 什么是 HoloMotion 1.2 技术定位:"小脑"基座模型 1.3 4-Any 愿景与路线图 1.4 核心能力矩…...
