1.引出类变量和类方法
传统方法解决以下问题
package com.logic.static_;
public class ChildGame {
public static void main(String[] args) {
int count = 0;
Child child1 = new Child("白骨精");
child1.join();
count++;
Child child2 = new Child("狐狸精");
child2.join();
count++;
Child child3 = new Child("蜘蛛精神");
child3.join();
count++;
System.out.println("共有" + count + "个小孩加入了游戏...");
}
}
class Child {
private String name;
public Child(String name) {
this.name = name;
}
public void join() {
System.out.println(name + "加入了游戏...");
}
}
问题分析
- count是个单独的变量,独立于对象
- 以后访问count都很麻烦,没有使用到OOP
- 因此引出类变量/静态变量
2.类变量快速入门
package com.logic.static_;
public class ChildGame {
public static void main(String[] args) {
int count = 0;
Child child1 = new Child("白骨精");
child1.join();
//count++;
child1.count++;
Child child2 = new Child("狐狸精");
child2.join();
//count++;
child2.count++;
Child child3 = new Child("蜘蛛精神");
child3.join();
//count++;
child3.count++;
//类变量可以通过类名来直接访问
System.out.println("共有" + Child.count + "个小孩加入了游戏...");
}
}
class Child {
//定义一个变量count 是一个类变量(静态变量) static静态
//该变量的最大特点就是会被Child类所有的对象实例共享
public static int count = 0;
private String name;
public Child(String name) {
this.name = name;
}
public void join() {
System.out.println(name + "加入了游戏...");
}
}
3.类变量的内存布局
- 不管static变量在哪里,static变量是同一个类所有对象共享
- static类变量,在类加载的时候就生成
4.类变量定义访问
什么是类变量
类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量
如何定义类变量
定义语法
访问修饰符 static 数据类型 变量名(推荐)
static 访问修饰符 数据类型 变量名
如何访问类变量
类名.类变量名(推荐)
或对象名.类变量名(静态变量的访问修饰符的访问权限和范围和普通属性是一样的)
Java类变量与静态属性详解

被折叠的 条评论
为什么被折叠?



