static成员与非静态成员的区别以及使用方法

来源:互联网 发布:linux解压rar命令 编辑:程序博客网 时间:2024/05/20 04:49

先简单的说一下,类中用 static 关键字修饰的成员都是静态成员,是这个类通用的特征( 属性 )行为( 方法 );而不用 static 修饰的成员即为非静态成员,或者叫实例成员,对于用同一个类实例出的每一个对象,都有他自己的一套实例成员,贵自己的实例对象独有。

使用方法如下:

静态成员一般通过类名调用,也可以通过对象来调用,或者在所在类的其他方法( 可以是静态,也可以是非静态 )里直接使用(不管如何调用,只要记住一点:同类所有对象共用同一个静态成员)。但是在静态方法里,只能直接访问静态成员,不能直接访问非静态成员。(要想在静态方法里访问非静态成员,可以实例该类的一个对象,然后在通过对象调用非静态成员。)

非静态成员只能通过实例调用,别无他法。

只要记住一点:把 static 成员和非静态成员彻底分隔开,他们各自作用不同,用法不同,之间没有任何联系。

class Test{

    
static int b = 999;
    
int a = 4;

    
void m1(){
        Test obj1 
= new Test();
        System.out.print(
"m1:   "+a+"  "+obj1.a);
        a
=1;
        System.out.print(
"  "+a+"  "+obj1.a);
        obj1.a
=2;
        System.out.println(
"  "+a+"  "+obj1.a);
        obj1.m2();
        System.out.println(
"m1:   "+a+"  "+obj1.a);    // Tag1:可以很好的观察m2方法中的a究竟代表什么
    }


    
void m2(){
        Test obj2 
= new Test();
        System.out.print(
"m2:   "+a+"  "+obj2.a);
        a
=8;
        System.out.print(
"  "+a+"  "+obj2.a);
        obj2.a
=9;
        System.out.println(
"  "+a+"  "+obj2.a);
        System.out.print(b);    
//在非静态方法中直接使用静态成员(相当于通过对象调用)
        m3();        //在非静态方法中直接使用静态成员(相当于通过对象调用)
    
//    obj2.m1();                // Tag2:当本语句被释放,同时Tag1被注释,会有不错的死循环效果
    }


    
static void m3(){
        System.out.println(b);
        b
=666;        //静态方法只能调用其他静态成员(也包括方法)
    
//    a=666;        //静态方法不能调用非静态属性(也不能调用静态方法)
    }


    
public static void main(String [ ] args){
        System.out.println(
"  :   a obj a obj a obj");
        Test obj 
= new Test();
    
//    obj.a=5;                // Tag3:帮助你充分理解:类中的属性是对象的属性
        obj.m1();
        System.out.println(
"main: "+obj.a);
        Test.m3();        
//通过类名调用静态方法
        m3();        //在静态方法内,可以直接调用本类的其他静态成员
        obj.m3();        //通过对象调用静态方法
        System.out.println(Test.b);
        System.out.println(b);
        System.out.println(obj.b);    
//通过对象调用静态属性
    
//    System.out.println(a);    //main也是静态方法,当然不能直接访问非静态属性

    }


}

 

(个人见解,仅供参考。欢迎提出不同见解,共同讨论!)

原创粉丝点击