黑马程序员技术交流社区

标题: 静态构造函数 [打印本页]

作者: 章闽    时间: 2012-10-23 13:39
标题: 静态构造函数
class Sundae
{
private Sundae()
{}
static Sundae makeASundae()
{
return new Sundae();
}
}
在同一个.java文件中,public主类中创建该类对象的方式如下:
public class HelloDate
{
Sundae testSundae = new Sundae.makeASundae();
}
为什么编译器总是抱错,说Sundae不能当作类型来解决,为什么?
作者: 杜正华    时间: 2012-10-23 14:07
Sundae.makeASundae();
本来就返回一个实例对象,你又new语法错误,把new删掉
作者: 于连林    时间: 2012-10-23 14:11
new 是用来创建类对象的,你那是通过类中的方法获得对象  把new去掉就行了
public class test_001 {

        /**
         * @param args
         */
         

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Sundae testSundae = Sundae.makeASundae();
                testSundae.a();
        }

}
class Sundae
{
        private Sundae()
        {
        }
        static Sundae makeASundae()
        {
                return new Sundae();
        }
        public void a(){
                System.out.println("ok");
        }
}
作者: 于连林    时间: 2012-10-23 14:11
new 是用来创建类对象的,你那是通过类中的方法获得对象  把new去掉就行了
public class test_001 {

        /**
         * @param args
         */
         

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Sundae testSundae = Sundae.makeASundae();
                testSundae.a();
        }

}
class Sundae
{
        private Sundae()
        {
        }
        static Sundae makeASundae()
        {
                return new Sundae();
        }
        public void a(){
                System.out.println("ok");
        }
}
作者: 黄小贝    时间: 2012-10-23 14:29


作者: 刘学宾    时间: 2012-10-23 14:33
Sundae testSundae = Sundae.makeASundae();
这条语句是获得一个名为testSudae的Sundae类类型的实例,而Sundae.makeASundae()的
前面不应加“new”,new是创建的意思,而Sundae.makeASundae()直接可以创建出一个实例。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2