4.JAVA基础复习——JAVA中的构造函数与this关键字
构造函数:构建创造对象时调用的函数
特点:
1.函数名与类名相同。
2.不用定义返回值类型。
3.没有具体的返回值。
public class Demo { private int age; private String name; //省略get、set方法 public Demo(){//无惨构造不写时系统将默认添加一个无惨构造 } }
作用:
给对象初始化,创建对象时会先调用构造方法对对象进行初始化。
注意:
1.默认构造函数的特点。不写构造函数时系统会自动给加一个默认的构造函数,如果自己 定义了一个构造函数,系统不会再给添加一个默认的构造函数。
2.多个构造函数是以重载的形式存在的。
3.创建对象都必须要通过构造函数初始化。
1 public class Demo { 2 private int age; 3 private String name; 4 //省略get、set方法 5 public Demo(){//无参构造不写时系统将默认添加一个无惨构造 6 } 7 public Demo(int age) {//有参构造多个构造函数以重载的形式存在 8 this.age = age; 9 } 10 public Demo(String name){ 11 this.name = name; 12 } 13 public Demo(String name,int age){ 14 this(age); 15 this.name=name; 16 } 17 18 public static void main(String[] args) { 19 Demo d = new Demo(10);//创建对象时会先去找与之参数对应的构造函数进行初始化 20 }
一般函数和构造函数的区别:
构造函数:
对象创建时,就会调用与之对应的构造函数,对对象进行初始化。
对象创建时,会调用且只调用一次
一般函数:
对象创建后,需要函数功能是才调用。
对象创建后,可以调用多次。
什么时候定义构造函数:
在描述事物时,该事物一存在就具备一些内容,这些内容都定义在构造函数中。
this关键字:
作用:
1.当成员变量和局部变量重名时,可以用this关键字来区分
1 public class Demo { 2 private int age;//成员变量 3 private String name; 4 public Demo(int age) {//参数为局部变量 5 this.age = age;//this.age表示当前对象的age用来跟局部变量age区分 6 } 7 }
2.当构造函数需要调用已有的构造函数时可以有this关键字,需要注意的是需要将调用的 构造函数放在第一行。
1 public class Demo { 2 private int age; 3 private String name; 4 public Demo(int age) { 5 this.age = age; 6 } 7 public Demo(String name,int age){ 8 this(age);//调用已有的构造函数,注意调用的构造函数要放在第一行 9 this.name=name; 10 } 11 }
this:
代表当前对象。
是所在函数所属对象的引用。
简单来说:哪个对象调用了this所在的函数,this就代表哪个对象。