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);//打印与上一样的对象
}
}