构造器的特征
1、它具有与类相同的名称
2、它不声明返回值类型。(与声明为void不同)
3、不能被static、final、synchronized、abstract、native修饰,不能有 return语句返回值
构造器的作用:创建对象;给对象进行初始化
构造方法的语法格式:
修饰符 构造方法名(参数列表){
初始化语句;
}
例子:
package honor;
public class Honor {
public Honor(){
System.out.println("这是一个无参的构造方法");
}
}
package honor;
import sun.org.mozilla.javascript.internal.ast.NewExpression;
import java.util.Date;
public class WeatherSpring {
String weather;
String people;
float DateNember;
public WeatherSpring(String newWeather,String newPeople, float newDateNember){
weather=newWeather;
people= newPeople;
DateNember= newDateNember;
System.out.println(newWeather+","+newPeople+newDateNember+","+"这是一个有参的构造方法");
}
}
使用:
package MyTest1;
import honor.Honor;
public class MyTest11 {
//完成 main 方法
public static void main(String[] args) {
Honor honor=new Honor();//无参构造方法的使用
}
}
package MyTest1;
import honor.WeatherSpring;
public class MyTest12 {
public static void main(String[] args) {
WeatherSpring weatherSpring=new WeatherSpring("天气很好","Java大神",4.7f);//有参构造方法的使用
}
}
3.有参数的构造方法称为有参构造方法,没有参数的构造方法称为无参构造方法。
4.如果我们有没有指定一个无参的构造方法,那么系统自动添加一个无参的构造方法(隐式无参构造器)。
5.我们创建对象时就是执行了构造方法了,例如:
Honor honor=new Honor();
可以通过无参的构造方法创建对象,也可以通过有参的构造方法创建对象;并给对象中的实例变量赋初值。
6.当有指定构造方法时,无论是有参、无参的构造方法,都不会自动添加无参的构造方法。
7.构造方法的重载:方法名相同,但参数不同、参数个数、参数顺序的多个方法,调用时会自动根据不同的参数选择相应的方法。
8.构造方法不但可以给对象的属性赋值,还可以保证给对象的属性赋一个合理的值,例如:
public WeatherSpring(String newWeather,String newPeople, float newDateNember){
if (newDateNember<4.7){
System.out.println("你输入的参数有问题,自动赋值3.8"); //在构造方法内加入判断方法,判断赋予的值是否合理,并自动赋值。避免了传值不安全的问题
DateNember=3.8f;
}else {
DateNember=newDateNember;
}
weather=newWeather;
people= newPeople;
DateNember= newDateNember;
System.out.println(newWeather+","+newPeople+newDateNember+","+"这是一个有参的构造方法");
}
}
注 意:
Java语言中,每个类都至少有一个构造器
默认构造器的修饰符与所属类的修饰符一致
一旦显式定义了构造器,则系统不再提供默认构造器
一个类可以创建多个重载的构造器
父类的构造器不可被子类继承
系统默认的构造器的修饰符权限跟类的修饰符权限一样
参考来自慕课网、尚硅谷