初学者,刚刚接触Java,请问个问题。
我有如下这个类:public class People { 
public String name;
public int age;
People(){
name = "";
age = 0;
}
}假如,我现在想在这个类中添加一个方法,是获得一个人类的实例,请问可以有几种写法?

解决方案 »

  1.   

    写法也许很多,但类别我觉得分两种。 基本都是通过类的static方法获得实例。
    一种是单例的,即每次只能获得同样的类的实例   private static People instance = null;   
        
       public static People getInstance() {   
            if (instance == null) {                            
                instance = new People ();                 }   
            return instance;   
        }使用时People people = People.getInstance();
    如果是多例   public static People newInstance() {   
            return new People ();
        }
    使用时People people = People.newInstance();
    如果楼主是想不让别人在外面new的话,可以把构造函数换成private的。
    还有楼主如果想问这样做和new有什么不一样,或者好处的话。可以baidu 工厂模式。
      

  2.   

    大侠,如果不上用上面的方法,我有个方式,您看可以吗?
    public class People { 
        public String name;
        public int age;
        People(){
            name = "";
            age = 0;
        }
        public People getPeople(String name){
            //这个是通过人名获得人
              People p = new People();
            //去数据库里查人名,得到人的属性,然后赋值
              p.name = "数据库中的人名";
            ......
            //最后返回这个人
              return p;
        }
    }
      

  3.   

    你这个是一楼所说的“通过类的static方法获得实例”差不多,只是一楼的写法更符合面向对象的封装性等原则而已
      

  4.   


    public staitc People getByName(String name){
     People p = new People();
     p.name = name;
     return p;
    }
    是要这个吗?
      

  5.   

    继续提问,呵呵,如果不加static,会有什么问题?我对static不甚了解,只知道他是用来声明静态变量或方法的,用它声明后,就无法修改,还有其他的意义吗?
      

  6.   

    继续提问,呵呵,如果不加static,会有什么问题?我对static不甚了解,只知道他是用来声明静态变量或方法的,用它声明后,就无法修改,还有其他的意义吗?
      

  7.   

    继续提问,呵呵,如果不加static,会有什么问题?我对static不甚了解,只知道他是用来声明静态变量或方法的,用它声明后,就无法修改,还有其他的意义吗?
      

  8.   


    不加static,就不是静态函数而是成员函数,也就意味着只能先new这个对象,才能调用。所以是否需要static关键还在于函数是用来干什么的,是需求和设计所决定的。
    此外,用static声明的成员变量,不存在无法修改的说法,这个理解有偏差;不可修改是 final 。