概要
Java类的有参和无参构造方法理解
注意事项
1.构造器(也叫构造方法)必须与类名相同,(如果一个源文件有多个类,那构造器必须与公共类同名)
2.每个类可以有一个以上构造器,且可以有0、1.或者1个以上的参数,相当于方法重载
3.构造器没有返回值
4.构造器可以被任意权限修饰符修饰,但通常用public,因为构造方法的作用就是初始化,若不用public修饰,则不能被所有类调用该类创建对象,(若被private修饰,则该类不能被其他类调用,这种情况只能有一个实例对象,这就是单例设计模式的思想)
5.构造器总是伴随着new操作一起调用
案例演示
- 无参构造方法
public class Person {
String name;
int age;
Person(){
System.out.println("无参构造方法...");
}
public static void main(String[] args) {
Person person = new Person();
}
}
效果:
2.1 不正常的有参构造方法(方法内没赋值)
public class Person {
String name;
int age;
Person(String name,int age){
System.out.println(name+","+age+"有参构造方法...");
}
public static void main(String[] args) {
Person person = new Person("张三",18);
}
}
效果:
2.2 注意:上面有参构造器创建对象时赋值无法覆盖有参构造方法内部的赋值
public class Person {
String name;
int age;
Person(String name,int age){
name = "里斯";
age = 20;
System.out.println(name+","+age+"有参构造方法...");
}
public static void main(String[] args) {
Person person = new Person("张三",18);
}
}
效果:
2.3 正常的有参构造器带this的有参构造
public class Person {
String name;
int age;
Person(String name,int age){
this.name = name; //this 区分实例变量和局部变量
this.age = age;
System.out.println(name+","+age+"有参构造方法...");
}
public static void main(String[] args) {
Person person = new Person("1", 1);
}
}
效果:
小结
1.如果一个类没写构造器,编译器会自动添加无参构造器,(如果自己手动加了构造器,无论有参还是没参,默认构造器都会失效)
2.如果一个类加了有参,则编译器只认有参,不认默认无参