黑马程序员技术交流社区

标题: java 类的构造函数的知识笔记 [打印本页]

作者: fmi110    时间: 2015-6-30 23:23
标题: java 类的构造函数的知识笔记
构造函数的知识笔记
  1. /*构造函数
  2.         对象已建立就会调用与之对应的构造函数
  3.         作用:可用于初始化对象
  4.         当一个类中未定义构造函数时,系统会默认给该类构建一个空参数的构造函数;
  5.         当自定义构造函数后,系统不再定义空参数的构造函数
  6. */
  7. class PersonDemo2
  8. {
  9.         public static void main(String[] args)
  10.         {
  11.                 System.out.println("Hello World!");
  12. //                Person p1 = new Person();
  13. //                p1.setName("lisan");
  14. //                p1.getName();
  15.                 Person p2 = new Person("Lili");
  16.                 p2.setName("fmi");
  17.                 p2.getName();
  18. //                Person p3 = new Person("Lilei",12);
  19.         }
  20. }

  21. class Person
  22. {
  23.         private String name;
  24.         private int age;
  25.        
  26.        

  27.         /*定义构造函数,函数名与类名必须一致*/
  28.         Person()
  29.         {
  30.                 System.out.println("A:系统默认的构造函数,无参数");
  31.         }

  32. /*
  33.         this :代表本类的对象,到底代表哪一个?
  34.                 this代表它所在函数所属对象的引用。哪个对象在调用this所在的函数,this就代表哪个对象

  35.         应用:当定义类中的功能时,该函数内部要调用到该函数的对象时,就用this来表示此对象
  36. */       
  37.         Person(String name)
  38.         {
  39.         //        name = name ; //注意变量作用域 类成员被 函数参数覆盖 导致赋值失败
  40.                 this.name = name;
  41.         //        System.out.println("B:Name = "+name);
  42.         }

  43.         Person(String name,int n)
  44.         {
  45. //                this.name = name;
  46. //                Person(name); // 错误,构造函数间不能直接调用,可通过this 解决,this语句必须放在函数第一行
  47.                                                 //因为初始化语句应该先执行,避免赋值语句赋值后被覆盖
  48.                 this(name); //this 关键字用于构造函数构造
  49.                 age = n;
  50.                 System.out.println("C:Name = "+name +"," + "age = " + age);
  51.         }
  52. /*构造代码块:对象一建立就运行,运行顺序: 构造代码块 --> 构造函数

  53.         作用:给所有对象进行初始化,而构造函数则通过函数重载
  54. 方式调用,不同对象可能调用不同的构造函数
  55.        
  56.         {
  57.                 System.out.println("这是代码块起始位置:");
  58.                 age = 2;
  59.                 System.out.println("代码块赋值age = "+age);
  60.         }
  61. */


  62.         public void setName(String name)
  63.         {
  64.                 this.name = name;  //参数名与类成员名一样时,通过this关键指定
  65.                 //name = name;
  66. //                name  = "name改变了,没加this";
  67. //                System.out.println("name = "+name);
  68. //                System.out.println("调用函数赋值名字");
  69.         }

  70.         public String getName()
  71.         {
  72.                
  73. //                System.out.println("调用函数输出名字:"+name);
  74.                 return this.name;
  75.         }
  76. }
复制代码


作者: fmi110    时间: 2015-6-30 23:24
创建一个对象,其实是通过调用构造函数来创建对象的????????




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2