构造函数的理解(引用来源JAVA构造函数(方法)_打杂人的博客-CSDN博客_java 构造函数)
Java构造函数,也叫构造方法,是JAVA中一种特殊的函数。与函数名相同,无返回值。
作用:一般用来初始化成员属性和成员方法的,即new对象产生后,就调用了对象的属性和方法。
一句话被点醒:在现实生活中,很多事物一出现,就天生具有某些属性和行为。比如人一出生,就有年龄、身高、体重、就会哭;汽车一出产,就有颜色、有外观、可以运行等。
构造函数是对象一建立就运行,给对象初始化,就包括属性,执行方法中的语句。
而一般函数是对象调用才执行,用 ".方法名" 的方式,给对象添加功能。
一个对象建立,构造函数只运行一次。
而一般函数可以被该对象调用多次。
事例:
1)当构造函数中需要传值给private变量时,不需要setter功能
package javastudy;
public class ConfunDemo3 {
public static void main(String[] args){
//实例化对象时,new Person()里直接调用Person构造函数并转转实参,相当于setter功能
Person z = new Person("aerchi",18);
z.show();
}
}
class Person{
private String name;
private int age;
//有参数构造函数,实现给private成员变量传参数值的功能
public Person(String n,int m){
name=n;
age=m;
}
//getter
//实例化对象时,完成了sett功能后,需要getter,获取实参值。
public String getName(){
return name;
}
public int getAge(){
return age;
}
//获取private值后,并打印输出
public void show(){
System.out.println(name+"\n"+age);
}
}
又涉及到一个自己不熟悉的知识点private(私有,封装)详细参考一下Java中get()方法和set()方法_zyuyuyuy的博客-CSDN博客_java中的get和set方法
目前自己做到的题还没有涉及到这个知识点,再接再厉。
2)PTA上简单一道题(自己理解还是不到位,加油加油吧)
public class Main {
public Main(){
System.out.println("构造方法一被调用了");
}
public Main(int x){
this(); //调用Main()
System.out.println("构造方法二被调用了");
}
public Main(boolean b){
this(1); //调用Main(int x)
System.out.println("构造方法三被调用了");
}
public static void main(String[] args) {
Main a = new Main(true);
}
}
不懂上面的this为什么可以调用调用Main(int x),然后又去查找资料(找到一篇文章,自己总结如下,应该还有些疏漏,希望以后能够慢慢补全)
(1)this不可以在普通方法中,因为是构造方法(至少有一个)执行完后才进行this的调用所以当它存在与普通方法中时就会出现错误
(2)使用this可以实现构造方法的互相调用,但是
一、this()调用构造方法的语句必须放在构造方法的首行。
二、使用this调用构造方法的时候请留有出口;
(3)调用方式:
普通方法:this.方法名称(参数...)
构造方法:this(参数...)