导航
我们为什么需要这些非访问修饰符?
像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
- 访问控制修饰符 : default, public , protected, private(详细介绍见:《封装、继承、多态》,中的访问修饰符)
- 非访问控制修饰符 : static,final, abstract , synchronized,volatile
四个访问修饰符,解决了Java中类与类之间访问权限的设置问题。而非访问控制修饰符,各有各的妙用,且听我一一道来:
static修饰符
static 修饰符,可以用来修饰类方法和类变量。
static变量
- 修饰变量时,称变量为静态变量:
static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。
static方法
- 修饰方法时,称方法为静态方法:
static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。
来个实例:
class Person {
public static int totalnum; // totalnum为静态变量变量,static修饰
private String name;
private int age;
Person(String name,int age) {
this.name = name ;
this.age = age;
Person.totalnum++;
}
public void die(){
totalnum--;
}
public static void destroy() {
totalnum = 0;
// age = 18; 会报错,static方法中不能使用非static变量
}
}
public class Test {
public static void main(String[] args){
Person person1 = new Person("小猪",18);
System.out.println("小猪出生后,人类总人数:"+person1.totalnum); // Person.totalnum结果与一样
Person person2 = new Person("小牛",20);
System.out.println("小牛出生后,人类总人数:"+person2.totalnum)