2021.4.27:静态属性与静态方法
在一个class中定义的属性,我们称之为实例属性。实例属性的特点是,每个实例的属性相互独立,互不影响。
1、静态属性
定义
用static关键字修饰的属性
作用
静态属性由所有实例共享,可以通过类名直接访问类的静态属性。
通过一个实例修改静态属性,将会导致所有实例的静态属性的修改。
例子
class Person{ public String name; public int age; public static int number; }
访问
类名.静态属性
原理
在Java程序中,实例对象并没有静态字段。在代码中,实例对象能访问静态字段只是因为编译器可以根据实例类型自动转化为类名.静态字段来访问静态对象。
2、静态方法
定义
用static修饰的方法
特点
- 无法使用this;
- 无法访问实例属性;
- 只能访问静态属性;
调用
类名.静态方法
调用静态方法时不需要实例变量,通过类名就可以调用。静态方法类似其它编程语言的函数。
作用
- 对静态属性进行操作(非主要作用,因为可以直接对静态属性进行操作)
- 工具类:
Arrays.sort(); Math.random();
- 辅助方法,例如Java程序入口main方法
3、接口的静态属性
接口中不能有实例属性,但是可以有静态属性,并且静态属性必须用final static修饰,即不允许修改的静态属性。
public interface Person{ public static final int MALE=1; public static final int FEMALE=2; }
修饰符public static final三者的顺序随意。
实际上,由于interface的字段只能是public static final类型,所以我们可以把这些修饰符都删去:
public interface Person{ //编译器会自动加上public static final: int MALE=1; int FEMALE=2; }
编译器会自动把该字段变为public static final
总结
- class中的字段(属性和方法)有两种:实例字段和静态字段——实例字段:每个实例中不同;静态字段:一个类所有实例的共有字段,修改一个等于修改全部;
- 静态字段用static修饰,通过类名.字段访问;
- 静态方法中无法用this,无法访问实例属性,只能访问静态属性;
- 静态方法的三种作用:
- 对静态属性进行操作;
- 工具类的常用方法,比如Math.random();
- main方法
- 接口中不能有实例属性,但是可以有静态属性,且必须用final static修饰,说明初始化后不能进行修改,由于接口中的属性只能是用public final static修饰的,所以这些属性可以像抽象类中的一般抽象方法(用public abstract修饰)一样,不写前缀,但在编译时仍会自动加上前缀
public interface A{ int MALE=1;//相当于public final static int MALE=1; }
分类:
Java
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性