黑马程序员技术交流社区

标题: 构造函数如果使用void类型修饰的话将会出现什么现象? [打印本页]

作者: 张慈瑞    时间: 2014-7-9 23:06
标题: 构造函数如果使用void类型修饰的话将会出现什么现象?
之前我在写代码的时候经常在构造函数的前面加一个void类型的修饰,但不知道为什么对象却不初始化,也不报错,不知道大家有没有出现过这种问题。
作者: iPear    时间: 2014-7-9 23:09
个人认为你加了void后 这就成了一个普通的方法而不是构造方法了,调用构造方法时调用的还是系统默认的为空的构造方法
作者: 渴望学习    时间: 2014-7-9 23:13
同意楼上观点

作者: 人心如水    时间: 2014-7-9 23:17
在编码时期看的是你语法上的错误,加void就成了普通方法,编译不会报错。
构造方法为什么不能使用void呢?    因为构造函数是给对象初始化使用,对象创建完成构造方法就会执行结束,构造方法只在对象创建时使用一次,所以不需要返回值类型。而普通方法在对象创建后,可以被多次调用

  
作者: iPear    时间: 2014-7-9 23:17
刚刚验证了下
你看我构建了类Bbc 和测试类Abc
我在Bbc中写了一个带void“代参构造”如果它生效 系统不会提供无参构造,
但是我创建了对象说明系统提供了无参构造 进而我通过set/get方法又验证了这个,
系统不是没有初始化,是把你的方法当成普通方法了
public class Bbc {
        int x;
        public void Bbc(int x){}
        public int getX() {
                return x;
        }
        public void setX(int x) {
                this.x = x;
        }
       
}
public class Abc {
        public static void main(String[] args) {
                Bbc b = new Bbc();
                System.out.println(b.getX());
                b.setX(5);
                System.out.println(b.getX());
        }

}
作者: 张慈瑞    时间: 2014-7-9 23:47
是的,加void的话就会变成普通方法,可以通过创建对象调用,当然这就比较麻烦了,最好不要出现这种情况,写代码的时候要多注意。




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