回顾Java知识点的时候,看到了构造方法,也许太久没有接触java了导致一时理解不了构造方法,现在写下来记录。
有钱人的孩子在起跑线就已经领先一步,而贫穷人的孩子只能靠一步一步打拼。而构造方法就好比有钱人,在孩子刚出生的时候就创造了条件,对这个孩子初始化赋值了。
从代码的角度来看,起到了简化的作用。
构造方法的作用:生成对象并对其初始化赋值
构造方法的注意事项:
1.当此类中没有创建构造方法,那么此类会自动生成一个默认的无参构造函数,同理,如果此类创造了一个构造方法,那么默认的就会消失。
2.构造方法的命名必须与本类相同。
3.构造方法不允许有返回值类型声明。
4.构造方法允许重载。
5.构造函数是在对象建立时由JVM调用, 给对象初始化。一般函数是对象建立后,当对象调用该功能时才会执行。
举例:
写一个Person类,里面定义两个参数,并且没有创造有参的构造方法,所以会默认生成下面的无参构造方法
package review2;
public class Demo_gouzao {
public static void main(String[] args){
Person p1 = new Person();
p1.name = "张三";
p1.age = 15;
Person p2 = new Person();
p2.name = "李四";
p2.age = 20;
System.out.println(p1.name+p1.age);
System.out.println(p2.name+p2.age);
}
}
class Person{
Person(){//默认的无参构造函数
}
String name;
int age;
}
结果如下:
这就好比贫穷人的状况,需要在主函数里面进行赋值,代码复杂且麻烦。
随后另外创一个Person类,在类中创造有参的构造方法,对给予的对象进行初始化赋值。
package review2;
public class Demo_gouzao2 {
public static void main(String[] args){
Person2 p1 = new Person2("张三",15);
Person2 p2 = new Person2("李四",20);
System.out.println(p1.name+p1.age);
System.out.println(p2.name+p2.age);
//同一个包的构造类如果撞名,会出现editor does not contain a main type的bug
}
}
class Person2{
String name;
int age;
Person2(){//默认的无参构造函数
}
Person2(String name,int age){
this.name = name;
this.age = age;
}
}
这样的话,就可以方便在生成对象的同时也给对象进行赋值,简化了过程。
结果相同:
补充:
子类必须调用父类的构造函数。但是,子类只能继承父类的默认构造函数,如果父类没有默认的构造函数,那子类不能从父类继承默认构造函数。这时子类必须使用super来实现对父类的非默认构造函数的调用。
参考文章:
1.
https://blog.csdn.net/qq_33642117/article/details/51909346