您的位置:首页 > 编程语言 > Java开发

JAVA之类,构造函数和构造代码块

2017-06-23 08:43 295 查看
类:

        在我们的日常生活中,对于事物的描述无非就是描述事物的属性和行为。如:人的身高,体重,年龄等称为属性,人会说话,会跑步,会做饭等等称为行为。

        而对于Java中的类,无非也是如此,包含了属性和行为。

类的定义:

属性:对应类中的成员变量
行为:对应类中的成员函数

例如:

public class User {
public User() {
}
public User(String username, int age) {
this.username = username;
this.age = age;
}
private String username;
private int age;
public String say(String str){
return  str;
}
public void sleep(){

}
}


分析:

        首先创建了一个User类,其中用户名(username),年龄(age)是User类的成员变量。说话(say),睡觉(sleep)是User类的行为,而其余两个则是User类的无参构造器和有参构造器。

这里我们提到了一个成员变量,那么这个成员变量跟我们曾几何时学习的局部变量有什么关系呢?

成员变量和局部变量的关系:

成员变量:

成员变量直接定义在类中。
成员变量在这个类中有效。
成员变量随着对象的建立而存在,消失而消失,存在于对象所在的堆内存中。
局部变量:

局部变量定义在方法中,参数上,语句中。
局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。
局部变量存在与栈内存中,随着所属区域的运行而存在,结束而释放。

构造函数定义:用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种。

特点:

该函数的名称和所在类的名称相同。
不需要定义返回值类型。
该函数没有具体的返回值。
注:所有的对象创建时,都需要初始化才能使用。

注意事项:一个类在定义时,如果没有定义过构造函数,那么该类中会自动生成一个空参数的构造函数,为了方便该类创建对象,完成初始化。如果在类中自定义了构造函数,那么默认的构造函数就没有了。

一个类中,可以有多个构造函数,因为它们的函数名称是相同的,所以只能通过参数列表进行区分。所以,一个类中如果出现多个构造函数,它们的存在是以重载体现的。 

上面具体的介绍了一下构造函数的定义,特点等等。但是同样还有很多疑问,如他和一般函数有那些区别呢和构造代码块有什么区别呢等等问题。

构造函数和一般函数的区别:

构造函数是在对象创建时,被调用,用户对象的初始化。而且对象的初始化动作只执行一次。
一般函数,是对象创建完成后,需要调用才执行,可以被调用多次。
构造函数和一般函数的定义格式不同。
构造代码块和构造函数的区别:

构造代码块是给所有的对象进行初始化,也就说,所有的对象都会调用一个代码块。只要建立对象,就会调用这个代码块。
构造函数是给与之对应的对象进行初始化,它具有针对性。
问:构造代码块和构造函数的执行顺序是什么?

以一个简单的案例展示一个它们的执行顺序:

User类:

public class User {
private String username;
private int age;
{
System.out.println("构造代码块");
}

public User() {
System.out.println("无参构造方法");
}
public User(String username, int age) {
this.username = username;
this.age = age;
System.out.println("有参构造方法");
}
}


测试类:

public static void main(String[] args) {
User u = new User();
User user = new User("张三",18);
}


执行结果:

构造代码块
无参构造方法
构造代码块
有参构造方法


结果分析:通过案例的验证,我们确定了构造代码块在构造方法之前执行。构造代码块在每次创建对象时都会执行。构造方法之被调用一次,而且是针对性的。

总结:书读百遍其义自见。只有基础扎实了,才能勇攀高峰。加油!!!加油!!!加油!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐