类成员

来源:互联网 发布:windows gcc搭建 编辑:程序博客网 时间:2024/06/06 00:29

理解类成员:类成员就是被static修饰的的成员


类变量属于整个类,当类初始化完成后,类变量也被初始化完成


类变量既可以通过类来访问,也可以通过对象访问,但是通过对象访问只是一种假象,通过对象访问依然是该类的类变量,可以这样理解:当通过对象来访问类变量时,系统会

在底层转换为通过该类来访问类变量

public class NullAccessStatic {    public static int id;    private static void test(){    System.out.println("static的静态方法");    }    public static void main(String args[]){   NullAccessStatic nas = null;   nas.id=12;   System.out.println(id);//输出:12   nas.test();//输出:static的静态方法   //如果null对象访问实例成员,将会引发异常,因为null表示该对象根本不存在   //所以采用对象来调用类方法和类变量时,是一种假象,系统会在底部转换为通过该类来访问类变量。    }}

类成员不能访问实例成员,因为类成员是属于类的,类成员的作用比实例成员作用域更大,完全可能出现类成员已经初始化完成,但实例成员还不曾初始化的情况,如果允许类

成员访问实例成员将会引起大量错误


单例类:如果一个类始终只能创建一个实例,则这个类被称为单例类

class Singleton{//使用一个类变量来缓存曾经创建的实例    private static Singleton instance;    //对构造器使用private修饰,隐藏该构造器    private Singleton(){        }    //提供一个静态方法,用于返回Singleton实例    //该方法可以加入自定义控制,保证只产生一个Singleton对象    public static Singleton getInstance(){    //如果instance为null,则表明还不曾创建Singleton对象    if(instance == null){    //创建一个Singleton对象,并将其缓存起来    instance = new Singleton();    }    return instance;    }}public class SingletonTest {public static void main(String args[]){Singleton s1 = Singleton.getInstance();Singleton s2 = Singleton.getInstance();System.out.println(s1==s2);//输出:true}}

上面通过getInstance方法提供的自定义控制,保证只产生一个实例。所以在main方法中,看到产生的两次Singleton对象实际上是同一个对象





原创粉丝点击