黑马程序员----关于构造函数与的学习以及this指针在构造函数间的调用规则

时间:2023-01-23 23:51:56

                                                 第一章  构造函数的特点以及应用

(1)构造函数的特点:

构造函数名与类名相同

不用定义返回值类型

不可以写return语句

(2)构造函数作用:

给对象初始化

(3)构造函数与普通函数的区别

对象一建立就会调用与之对应的构造函数

构造函数的作用;可以给对象初始化

构造函数的小细节;当一个类没有定义构造函数时候,系统会自动加入一个空参数的构造函数

构造函数在对象一建立就运行,给对象初始化

而一般方法是对对象调用才执行,给对象添加对象具备的功能

 一个对象建立,构造函数只能运行一次

而一般方法可以被对象调用多次

(4)构造函数代码举例

 

public class person{

       intage;                            //私有成员

        String name;

        person(){                                    //无参的构造函数

        System.out.println("age="+age+"name="+name);

        }

        person(int n){                   //参数类型为int 型的构造函数

      age=n;

        System.out.println("age="+n);

        }

        person(String s){                   //参数类型为String类型的构造函数

      name=s;

        System.out.println("name="+s);

        }

}

class persontest {

      publicstaticvoid main(String[] args) {

        person p1= new person();            //无参的构造函数,也可以理解成将系统默认的无参构造函数改写

        person p2= new person(2);          //参数类型为int型,调用person(int n)构造函数

        person p3= new person("ss");      //参数类型为String类型,调用persoperson(String s)构造函数

   }

}

 

当类中没有构造函数时候,系统会自动给类添加一个无参的构造函数

当创建一个对象时候,系统会根据参数的类型以及参数个数找到相应的构造函数进行初始化

 

                                      第二章 .this 指针在构造函数间的调用

(1)用this在构造函数之间的调用可以提高代码的复用性:例如,在一个Person类中,已经有一个对年龄初始化的构造函数,再定义一个对年龄,性别初始化的构造函数,其中一部分功能已经在前面一个构造函数实现,不必重写,这时候可以用到this指针简化代码以及提高代码复用

(2)书写格式

必须写构造函数第一行

用this语句  格式为this(/*需要初始化的变量*/)

(3)代码举例

 

class person1{

      intage;

        String name;

        person1(String name){

           this.name=name;

             }

        person1(String name,int age){

           this(name);                           //name在前面一个构造函数中已经实现初始化,这一部分可以直接使用this指针,无需在实现代码过程

           this.age=age;

    }

}

public class personnDemo {

        publicstaticvoid main(String[] args) {

                 person1 p=new person1("cheng",25);

           }

}

(4)this指针的调用过程:在主函数初始化时候,系统根据参数的匹配调用person1(String name,int age),在person1(String name,int age)函数中,初始化姓名功能已经实现,直接调用构造函数person1(String name)完成初始化功能

(5)注意:this指针在构造函数之间的调用时候,this语句必须放在构造函数第一句