正文

一个静态初始化的例子2006-05-29 21:28:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/edwardguo/15183.html

分享到:

欲编写一个"总统"类,其构造器中可以包含一系列的创建"总统"的步骤:

class President

{

    public President(){

        //...

    }

}

这样做的一个问题是"总统"只能有一个,但其他程序使用这个类时却可以用new President()创建多个不同的"总统"。为了防止多个“总统”被创建出来,可以将President的构造器由public类型改为private类型,根据前面的访问控制规则,这样该构造器就只能在类President内部使用,而在类之外就不可使用了。

class President

{

    private President(){

        //...

    }

}

这样,在其他类中就无法用President创建对象了,但为了仍能使用President对象,可以在类President中通过显示初始化创建好,如下

class President{

    String name;

    static President x=new President();

    private President(){

        name="xxx";

    }

class Test{

    public static void main (String args[ ]){

        //President x= new President();

        President p=President.x;

        System.out.println(p.name);

    }

}

    在President中定义了变量x,其显示初始化中创建了President对象,由于在类Test中无法创建President对象,因而President中的x定义为static类型,以便通过类名直接访问。这样,类President保证了使用时只能通过President.x来获取对象,该对象在整个程序中只有一个。程序中任何地方都不可以创建对象,但可通过President.x来执行“总统”对象的方法、访问其成员变量。

     这样使用还有一些不足,如果在程序中某一块不小心写了President.x=null,且没有其他变量指向该“总统”对象,则“总统”对象会丢失而无法再访问。因而可进一步将变量x也封装起来,只允许通过方法来访问。如下。

class President{

    String name;

    private static President x=new President();

    private President(){

        name="xxx";

    }

    static President getPresident()

    {

        return(x);

    }

}

class Test{

    public static void main (String args[ ]){

              President p=President.getPresident();

              System.out.println(p.name);

    }

}

 

 

阅读(3774) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册