第八章:类变量
类变量和类方法
什么是类变量
类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的
对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改
的也是同一个变量。这个从前面的图也可看出来。
注意:类变量是随着类的加载而创建的,所以没有创建对象实例也可以访问;
如何定义类变量
定义语法:
访问修饰符static数据类型变量名;[推荐]
static访问修饰符数据类型变量名;
class A{
public static String name = "abc";
如何访问类变量 VisitStatic.java
static public int totalNum = 100;
类名.类变量名
或者对象名.类变量名【静态变量的访问修饰符的访问权限和范围和普通属性是一样的。
推荐使用:类名.类变量名:
类变量和类方法
类变量使用注意事项和细节讨论 StaticDetail.java
1.什么时候需要用类变量
当我们需要让某个类的所有对象都共享一个变量时,就可以考虑使用类变量(静态
变量):比如:定义学生类,统计所有学生共交多少钱。Student(name,static
fee)
2.类变量与实例变量(普通属性)区别
类变量是该类的所有对象共享的,而实例变量是每个对象独享的。
3.加上static称为类变量或静态变量,否则称为实例变量/普通变量/非静态变量
4.类变量可以通过类名.类变量名或者对象名.类变量名来访问,但java设计者推荐
我们使用类名.类变量名方式访问。【前提是满足访问修饰符的访问权限和范围】
5.实例变量不能通过类名.类变量名方式访问。
6.类变量是在类加载时就初始化了,也就是说,即使你没有创建对象,只要类加载了
就可以使用类变量了。[案例演示]
7.类变量的生命周期是随类的加载开始,随着类消亡而销毁。
[举例,Monster.name][案例演示]
类方法基本介绍
类方法也叫静态方法。
形式如下:
访问修饰符static数据返回类型方法名0{}【推荐】
static 访问修饰符数据返回类型方法名(0{}
·类方法的调用:
使用方式:类名.类方法名或者对象名.类方法名【前提是满足访问修饰符的访问权限和范围
1 package com.StaticVar;
2
3 public class Teacher {
4 public static void main(String[] args) {
5 //类变量的访问
6 //类名.类变量名
7 //类变量的是由类加载而创建的,所以在没有创建实例对象也可以进行访问
8 Student tom = new Student("tom");
9 //调用静态方法:
10 // 类名.类方法名或者对象名.类方法名【前提是满足访问修饰符的访问权限和范围
11 tom.payFee(500);
12 // Student.payFee(500);这种调用也是对的
13 Student jack = new Student("jack");
14 jack.payFee(100);
15 // Student.payFee(100);这种调用也是对的
16 // 总费用
17 Student.showFee();
18
19 }
20 }
21
22
23 class Student {
24
25 private String name;
26 //类变量:在本类中所有对象可以进行共享该变量
27 //类变量的访问,必须遵守 相关的访问权限
28 private static double fee = 0;
29
30 public Student(String name) {
31 this.name = name;
32 }
33
34 //静态方法:
35 //当方法中添加了static,该方法就是静态方法
36 //静态方法就可以访问静态属性/变量
37 public static void payFee(double fee) {
38 Student.fee += fee; //学费累积
39 }
40
41 public static void showFee(){
42 System.out.println("学费累积:"+Student.fee);
43 }
44 }
类变量和类方法
类方法使用注意事项和细节讨论
1)类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区:
类方法中无this的参数,普通方法中隐含着this的参数
2)类方法(静态方法)可以通过类名调用,也可以通过对象名调用。[举例]
3)普通方法和对象有关,需要通过对象名调用,比如对象名.方法名(参数),不能通过类名调用。[举例]
4)类方法(静态方法)中不允许使用和对象有关的关键字,比如this和super。普通方法(成员方法)可以。
[举例]
5)类方法(静态方法)中只能访问静态变量或静态方法。【如何理解】
6)普通成员方法,既可以访问普通变量(方法),也可以访问静态变量(方法)。
小结:静态方法,只能访问静态的成员,非静态的方法,可以访问静态成员和非静态成员
(必须遵守访问权限)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】