刚把构造函数和构造代码块这块看完,来谈谈我对构造函数的理解。 构造函数是用来给与之对应的对象进行初始化的。并且只要对象以建立,它就执行一次。 当一个类中没有构造函数时,那么系统会默认给该类加上一个空参数的构造函数。 当一个类中自定义了构造函数时,那么就会覆盖该类默认的构造函数。 为什么要用构造函数? 因为有些对象在刚一建立它就具有一些特有的属性(比如:人刚一出生就会哭)。所以才要用构造函来给对象进行初始化的。
特点:因为它是给对象初始化的,所以它是没有返回值类型的,因此也就没有return语句。并且名字与类名相同。
构造函数与一般函数有什么不同? 首先在格式上不同:一般函数要看返回值类型是什么,还要看有没有未知内容参与运算。 其次在运行上不同:一般函数是对象调用才执行,并且调用一次执行一次,可以多次调用。 构造函数是对象一建立就会被执行,并且只执行一次。
构造代码块:我的理解就是构造代码块是所有不同对象共性的初始化内容。 是给所有的对象进行初始化,也就是说,所有的对象都会调用一个代码块。只要对象一建立。就会调用这个代码块
创建一个对象都在内存中做了什么事情? 1:先将硬盘上指定位置的****.class文件加载进内存。 2:执行main方法时,在栈内存中开辟了main方法的空间(压栈-进栈),然后在main方法的栈区分配了一个变量**。 3:在堆内存中开辟一个实体空间,分配了一个内存首地址值。 4:在该实体空间中进行属性的空间分配,并进行了默认初始化。 5:对空间中的属性进行显示初始化。 6:进行实体的构造代码块初始化。 7:调用该实体对应的构造函数,进行构造函数初始化。() 8:将首地址赋值给** ,**变量就引用了该实体。(指向了该对象) - 例题:class Person
- {
- private int age;
- public void setAge(int age)
- {
- if(a>0&&a<130)
- {
- this.age=age;
- speak();
- }
- else
- {
- System.out.println("非法年龄!");
- }
- }
- public int getAge()
- {
- return age;
- }
- void speak()
- {
- System.out.println("age="+age);
- }
- }
- class PersonDemo
- {
- public static void main(String args[])
- {
- Person p=new Person();
- p.setAge(40);
- }
- }
复制代码
|