java--实例成员 & 静态成员

class run{

    static String str1 = "静态变量";

 String str2 = "非静态变量";

 public static void test1(){

  System.out.println("静态方法");

  run r1 = new run();

  System.out.println(r1.str1);//对象可以使用静态变量

//  System.out.println(str2);//错误,静态方法中不能直接访问非静态的变量,可以使用 【对象.变量】来访问。

  

  System.out.println(str1);

 }

 public void test2(){

  System.out.println("非静态方法");

  System.out.println(str1);//非静态的方法可以访问静态变量。

 }

}

public class Test {

 public static void main(String[] args) {

  run.test1();

  System.out.println(run.str1);

  

  run r2 = new run();

  r2.test2();

  System.out.println(r2.str2);

  

 }

}

 


//静态方法只能访问静态成员,实例方法可以访问静态和实例成员。
//之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,
//而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,
//如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。
//基于同样的道理,静态方法中也不能使用关键字this。
//
//main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。

你可能感兴趣的:(java)