Java的单例与静态成员变量与静态方法

class Dog

{

private static String name="狗";//狗的名字,你不知道所以是私有的;狗只有一个公共的名字所以是静态

int legNum;//狗的腿数

String color;//狗的颜色

String bodily;//狗的体型

//构造代码块,在构造方法中执行  但先于构造方法

{

System.out.println("这个只会被调用一次,因为这是一个单例");

}

//饿汉.....推荐

//狗只有一个所以创建一个单例的狗

private static Dog dog = new Dog();//创建一个静态的私有的对象dog,这个对象只会被静态方法或非静态方法调用

private Dog(){

//在这里私有化构造方法,使外部对象无法调用,防止在main函数里被new

}

public static Dog run(){

//在这里进行赋予单例;这里只能通过类方法访问

return dog;

}

//get与set方法

public void setColor(String color){

this.color = color;//因为color与成员变量color同名,所以要加this. 来加以区分

}

public String getColor(){

return color;//在这里系统会默认的给color添加上this.  不需要自己写

}

public void setName(String name){//不是所有的狗都一直被主人叫狗,但又因为是私有属性,不能在外部直接赋予name所以需要用到set方法赋予

this.name = name;

}

}

class work

{

public static void main(String[] args)

{

Dog d = Dog.run();//在这里进行创建单例

System.out.println(d);

d.setName("大黄");//赋予私有的静态的Name

d.setColor("红色");

System.out.println(d.getColor());//返回set的颜色

Dog d2 = Dog.run();

System.out.println(d2);//打印与上一样的对象

}

}

你可能感兴趣的:(Java的单例与静态成员变量与静态方法)