A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 可见 中级黑马   /  2012-3-10 11:33  /  2230 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问题是 构造函数 private student(){} 运行时提示报错;求解!
class StudentDemo
{
         public static void main(String[] args)
                  {
                           Student s=new Student();
                           s.setAge(10);
                           System.out.println(s.getAge());
                           Student1 s1=new Student1();
                           s1.setAge(20);
                           System.out.println(s1.getAge());
                  }
}
class Student
{
             private int age;
             private static Student s =new Student();
             //private Single(){}
             public static Student getInstance()
                  {
                       return s;
                  }
             public void setAge(int age)
                  {
                       this.age=age;
                  }
             public int getAge()
                  {
                       return age;
                  }

}
class Student1
{
             private int age;
             private static Student s=null;
             //private Student(){}
             private static Student getInstance()
                 {
                      if(s==null)
                             {
                                    synchronized(Student1.class)
                                         {
                                                  if(s==null)
                                                           s=new Student();      
                                          }
                               }
  
                       return s;
}


             public void setAge(int age)
                  {
                       this.age=age;
                  }
             public int getAge()
                  {
                       return age;
                  }
}



运行报错:private student(){}  需要返回值

6 个回复

倒序浏览
private student(){} 是写在Student1文件里的。你是否想写Student1的构造函数呢?如果是想写构造函数,请改为private Student1(){}.如果不是想写构造函数,必须加上返回类型,不然肯定会报错的。
回复 使用道具 举报
  //private Student(){}   这是Student类的构造函数,写在了Student1中当然报错!
回复 使用道具 举报
  1. public class XMLConfigReader {
  2.    
  3.     private static XMLConfigReader instance = null;
  4.    
  5.     private XMLConfigReader() {
  6.            
  7.     }
  8.    
  9.     public static XMLConfigReader getXMLConfigReader() {
  10.             if(instance == null) {
  11.                     instance = new XMLConfigReader();
  12.             }
  13.             return  instance;
  14.     }
  15. }
复制代码
对于单例模式,一般使用上述方法,即
1、私有的静态的成员变量
2、私有的构造函数
3、公共的静态的入口函数
使用场景:类中没有可以修改的成员变量
单例模式无法继承,无法扩展
如果读取配置文件,比较适合用单例模式
回复 使用道具 举报
学习学习!
回复 使用道具 举报
要想一个类 指向创建一个对象 就使用单列

1.构造方法私有化
2.创建本身对象私有化
3.提供一个静态 public 返回这个对象的 方法
回复 使用道具 举报
你这代码写的有问题啊,在类student1里应该是私有student1的构造函数,所以应该是private student1(){}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马