构造函数的知识笔记- /*构造函数
- 对象已建立就会调用与之对应的构造函数
- 作用:可用于初始化对象
- 当一个类中未定义构造函数时,系统会默认给该类构建一个空参数的构造函数;
- 当自定义构造函数后,系统不再定义空参数的构造函数
- */
- class PersonDemo2
- {
- public static void main(String[] args)
- {
- System.out.println("Hello World!");
- // Person p1 = new Person();
- // p1.setName("lisan");
- // p1.getName();
- Person p2 = new Person("Lili");
- p2.setName("fmi");
- p2.getName();
- // Person p3 = new Person("Lilei",12);
- }
- }
- class Person
- {
- private String name;
- private int age;
-
-
- /*定义构造函数,函数名与类名必须一致*/
- Person()
- {
- System.out.println("A:系统默认的构造函数,无参数");
- }
- /*
- this :代表本类的对象,到底代表哪一个?
- this代表它所在函数所属对象的引用。哪个对象在调用this所在的函数,this就代表哪个对象
- 应用:当定义类中的功能时,该函数内部要调用到该函数的对象时,就用this来表示此对象
- */
- Person(String name)
- {
- // name = name ; //注意变量作用域 类成员被 函数参数覆盖 导致赋值失败
- this.name = name;
- // System.out.println("B:Name = "+name);
- }
- Person(String name,int n)
- {
- // this.name = name;
- // Person(name); // 错误,构造函数间不能直接调用,可通过this 解决,this语句必须放在函数第一行
- //因为初始化语句应该先执行,避免赋值语句赋值后被覆盖
- this(name); //this 关键字用于构造函数构造
- age = n;
- System.out.println("C:Name = "+name +"," + "age = " + age);
- }
- /*构造代码块:对象一建立就运行,运行顺序: 构造代码块 --> 构造函数
- 作用:给所有对象进行初始化,而构造函数则通过函数重载
- 方式调用,不同对象可能调用不同的构造函数
-
- {
- System.out.println("这是代码块起始位置:");
- age = 2;
- System.out.println("代码块赋值age = "+age);
- }
- */
- public void setName(String name)
- {
- this.name = name; //参数名与类成员名一样时,通过this关键指定
- //name = name;
- // name = "name改变了,没加this";
- // System.out.println("name = "+name);
- // System.out.println("调用函数赋值名字");
- }
- public String getName()
- {
-
- // System.out.println("调用函数输出名字:"+name);
- return this.name;
- }
- }
复制代码
|
|