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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

之前我在写代码的时候经常在构造函数的前面加一个void类型的修饰,但不知道为什么对象却不初始化,也不报错,不知道大家有没有出现过这种问题。

5 个回复

倒序浏览
个人认为你加了void后 这就成了一个普通的方法而不是构造方法了,调用构造方法时调用的还是系统默认的为空的构造方法
回复 使用道具 举报
同意楼上观点
回复 使用道具 举报
在编码时期看的是你语法上的错误,加void就成了普通方法,编译不会报错。
构造方法为什么不能使用void呢?    因为构造函数是给对象初始化使用,对象创建完成构造方法就会执行结束,构造方法只在对象创建时使用一次,所以不需要返回值类型。而普通方法在对象创建后,可以被多次调用

  
回复 使用道具 举报
刚刚验证了下
你看我构建了类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());
        }

}
回复 使用道具 举报
是的,加void的话就会变成普通方法,可以通过创建对象调用,当然这就比较麻烦了,最好不要出现这种情况,写代码的时候要多注意。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马