类变量
引入:如果把变量写入main方法中,体现不出面向对象编程的思想。当某一个类所有对象都共享同一个变量时,可以考虑定义类变量,例如定义学生类,统计所有学生交多少钱。可以将费用定义为类变量。
public class ChildGame {
public static void main(String[] args) {
Child c1 = new Child("Mary");
c1.join();
Child.count++;
Child c2 = new Child("Tom");
c2.join();
Child.count++;
Child c3 = new Child("Jone");
c3.join();
Child.count++;
System.out.println(Child.count);
}
}
class Child{
private String name;
public static int count = 0;
public Child(String name) {
this.name = name;
}
public void join(){
System.out.println(name+"加入了游戏");
}
}
Mary加入了游戏
Tom加入了游戏
Jone加入了游戏
3
Process finished with exit code 0
静态变量是被同一个类所有对象所共享的。是在类加载的时候生成的。与对象创建与否无关。 jdk8之后静态变量是放在堆里面的,之前是放在方法区中的静态域中。
定义语法: 访问修饰符 static 数据类型 变量名; 访问语法:类名.类变量名; 也可以通过对象名.类变量名来访问,推荐使用第一种。还要注意访问权限。
类方法
在访问修饰符后面加上static修饰
案例:统计学费总和
public class StaticMethod {
public static void main(String[] args) {
Student s1 = new Student("Mary");
s1.pay(1000);
Student s2 = new Student("Tom");
s2.pay(2000);
Student.showFee();
}
}
class Student{
private String name;
public static double fee = 0;
public Student(String name) {
this.name = name;
}
public static void pay(double fee){
Student.fee +=fee;
}
public static void showFee(){
System.out.println("总学费为"+Student.fee);
}
}
总学费为3000.0
Process finished with exit code 0
类方法的使用场景是方法中不涉及任何和对象相关的成员时,可以将方法设计成静态方法,提高开发效率。即一些通用的方法。像打印一维数组、排序等。
注意类方法中无this、super参数。
类方法只能访问类成员变量。普通成员方法既可以访问普通变量(方法),也可以访问静态变量(方法)。
|