[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…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...
小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...
Qt的学习(二)
1. 创建Hello Word 两种方式,实现helloworld: 1.通过图形化的方式,在界面上创建出一个控件,显示helloworld 2.通过纯代码的方式,通过编写代码,在界面上创建控件, 显示hello world; …...
用鸿蒙HarmonyOS5实现国际象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码,使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...
