面向对象通识14(static修饰符)

static并不是字面意义上“静态”的意思,而是类的意思——

  • static的成员是类成员
  • 没有static的成员是实例成员
    //在C语言中有静态变量这一概念,即将改变量放置于静态存储区
    但Java并没有这一概念,static只能修饰成员变量 成员变量方法初始化块内部类
    • 所以,static不能修饰局部变量,局部变量不属于类
    • static也不能修饰构造器,构造器存在的目的是初始化对象,而对象对标的是实例

**static**成员——属于类成员——

所有的类成员,都只能用类名来调用(Java语法允许用对象来调用类成员,但这是没有意义的操作)

若遇到题目中使用对象来调用类成员,将对象改为类名

static考点

  • static成员不能访问非static成员
  • static成员可以访问static成员

static成员

static修饰的成员变量方法初始化块内部类(四种)

static成员

没有static修饰的成员变量方法初始化块内部类、构造器(五种)

以下举一些static成员访问非static成员的错误范例:

  1. public class Test1{
  2. int q=20;
  3. static int a=q;
  4. }
  5. /*
  6. static变量不能访问非static变量
  7. */
  1. public class TestStatic {
  2. int a;
  3. static {
  4. a=20;
  5. }
  6. }
  7. /*
  8. static初始化块不能访问非static变量
  9. */
  1. public class TestStatic {
  2. int a;
  3. public static void main(String[] args) {
  4. System.out.println(a);
  5. }
  6. }
  7. /*
  8. static方法不能访问非static变量
  9. */

(总共能举例20个,在此不意义列举了)