java中,如果你写了构造函数,则编译器就不会调用
2个回答
展开全部
印刷确实有问题,否则就是书的描述不全。
每个类都有一个默认的不带参数构造方法,如果自己没有定义任何构造函数,那么这个类实例化的时候就会调用这个默认的构造方法。
如果你自己写了一个构造方法,那么类在初始化的时候就不会去调用这个默认的方法了,因为它已经不存在了,如果你想自己写一个构造方法,又想保留原来的默认的构造方法,你就要把那个空参数的构造方法自己再写一遍。这样编译才不会报错。比如
public
class
A{
int
a;
public
A(){//默认
}
public
A(int
num){/自定义
a=num;
}
}
很简单的类A,第一个无参数的构造方法就是默认的构造方法,第二个带参数的方法是我们自己写的构造方法。如果你两个构造方法都没有,那么这个类A就相当于隐式的含有第一个构造方法。如果你只写了第二个构造方法,那么第一个就当作不存在了,如果这个时候你写下面的语句
A
a1=new
A();编译器肯定报错,因为这个类没有不带参数的构造方法,你只能写A
a1=new
A(5);使用自己的构造方法,在实例化A的对象的时候,同时让这个实例的成员变量a的初始值为5
如果我自己写了带参数的构造器,又想调用A
a1=new
A();那么就请显式的写上第一个构造方法吧,也就是说原来默认的构造方法,你就要自己写出来,不然编译器就找不到了。
希望我的回答能帮助你!
每个类都有一个默认的不带参数构造方法,如果自己没有定义任何构造函数,那么这个类实例化的时候就会调用这个默认的构造方法。
如果你自己写了一个构造方法,那么类在初始化的时候就不会去调用这个默认的方法了,因为它已经不存在了,如果你想自己写一个构造方法,又想保留原来的默认的构造方法,你就要把那个空参数的构造方法自己再写一遍。这样编译才不会报错。比如
public
class
A{
int
a;
public
A(){//默认
}
public
A(int
num){/自定义
a=num;
}
}
很简单的类A,第一个无参数的构造方法就是默认的构造方法,第二个带参数的方法是我们自己写的构造方法。如果你两个构造方法都没有,那么这个类A就相当于隐式的含有第一个构造方法。如果你只写了第二个构造方法,那么第一个就当作不存在了,如果这个时候你写下面的语句
A
a1=new
A();编译器肯定报错,因为这个类没有不带参数的构造方法,你只能写A
a1=new
A(5);使用自己的构造方法,在实例化A的对象的时候,同时让这个实例的成员变量a的初始值为5
如果我自己写了带参数的构造器,又想调用A
a1=new
A();那么就请显式的写上第一个构造方法吧,也就是说原来默认的构造方法,你就要自己写出来,不然编译器就找不到了。
希望我的回答能帮助你!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询