A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  刚把构造函数和构造代码块这块看完,来谈谈我对构造函数的理解
构造函数是用来给与之对应的对象进行初始化的。并且只要对象以建立,它就执行一次。
当一个类中没有构造函数时,那么系统会默认给该类加上一个空参数的构造函数。
当一个类中自定义了构造函数时,那么就会覆盖该类默认的构造函数。
为什么要用构造函数?
因为有些对象在刚一建立它就具有一些特有的属性(比如:人刚一出生就会哭)。所以才要用构造函来给对象进行初始化的。

特点:因为它是给对象初始化的,所以它是没有返回值类型的,因此也就没有return语句。并且名字与类名相同。

构造函数与一般函数有什么不同?
  首先在格式上不同:一般函数要看返回值类型是什么,还要看有没有未知内容参与运算。
其次在运行上不同:一般函数是对象调用才执行,并且调用一次执行一次,可以多次调用。
                  构造函数是对象一建立就会被执行,并且只执行一次。


构造代码块:我的理解就是构造代码块是所有不同对象共性的初始化内容。
是给所有的对象进行初始化,也就是说,所有的对象都会调用一个代码块。只要对象一建立。就会调用这个代码块


创建一个对象都在内存中做了什么事情?
1先将硬盘上指定位置的****.class文件加载进内存。
2执行main方法时,在栈内存中开辟了main方法的空间(压栈-进栈),然后在main方法的栈区分配了一个变量**。
3在堆内存中开辟一个实体空间,分配了一个内存首地址值。
4在该实体空间中进行属性的空间分配,并进行了默认初始化。
5对空间中的属性进行显示初始化。
6进行实体的构造代码块初始化。
7调用该实体对应的构造函数,进行构造函数初始化。()
8将首地址赋值给** ,**变量就引用了该实体。(指向了该对象)
  1. 例题:class Person
  2. {
  3.         private int age;
  4.         public void setAge(int age)
  5.         {
  6.                 if(a>0&&a<130)
  7.                 {
  8.                         this.age=age;
  9.                         speak();
  10.                 }
  11.                 else
  12.                 {
  13.                         System.out.println("非法年龄!");
  14.                 }
  15.         }
  16.         public int getAge()
  17.         {
  18.                 return age;
  19.         }
  20.         void speak()
  21.         {
  22.                 System.out.println("age="+age);
  23.         }
  24. }
  25. class PersonDemo
  26. {
  27.         public static void main(String args[])
  28.         {
  29.                 Person p=new Person();
  30.                 p.setAge(40);
  31.         }
  32. }
复制代码



1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马