面向对象通识14(static
修饰符)
static
并不是字面意义上“静态”的意思,而是类的意思——
- 有
static
的成员是类成员 - 没有
static
的成员是实例成员
//在C语言中有静态变量这一概念,即将改变量放置于静态存储区
但Java并没有这一概念,static
只能修饰成员变量 成员变量、方法、初始化块、内部类- 所以,
static
不能修饰局部变量,局部变量不属于类 static
也不能修饰构造器,构造器存在的目的是初始化对象,而对象对标的是实例
- 所以,
**static**
成员——属于类成员——
所有的类成员,都只能用类名来调用(Java语法允许用对象来调用类成员,但这是没有意义的操作)
若遇到题目中使用对象来调用类成员,将对象改为类名
static
考点
static
成员不能访问非static
成员- 非
static
成员可以访问static
成员
static
成员
有static
修饰的成员变量、方法、初始化块、内部类(四种)
非static
成员
没有static
修饰的成员变量、方法、初始化块、内部类、构造器(五种)
以下举一些static
成员访问非static
成员的错误范例:
public class Test1{
int q=20;
static int a=q;
}
/*
static变量不能访问非static变量
*/
public class TestStatic {
int a;
static {
a=20;
}
}
/*
static初始化块不能访问非static变量
*/
public class TestStatic {
int a;
public static void main(String[] args) {
System.out.println(a);
}
}
/*
static方法不能访问非static变量
*/
(总共能举例20个,在此不意义列举了)