JAVA之类,构造函数和构造代码块
2017-06-23 08:43
295 查看
类:
在我们的日常生活中,对于事物的描述无非就是描述事物的属性和行为。如:人的身高,体重,年龄等称为属性,人会说话,会跑步,会做饭等等称为行为。
而对于Java中的类,无非也是如此,包含了属性和行为。
类的定义:
属性:对应类中的成员变量
行为:对应类中的成员函数
例如:
分析:
首先创建了一个User类,其中用户名(username),年龄(age)是User类的成员变量。说话(say),睡觉(sleep)是User类的行为,而其余两个则是User类的无参构造器和有参构造器。
这里我们提到了一个成员变量,那么这个成员变量跟我们曾几何时学习的局部变量有什么关系呢?
成员变量和局部变量的关系:
成员变量:
成员变量直接定义在类中。
成员变量在这个类中有效。
成员变量随着对象的建立而存在,消失而消失,存在于对象所在的堆内存中。
局部变量:
局部变量定义在方法中,参数上,语句中。
局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。
局部变量存在与栈内存中,随着所属区域的运行而存在,结束而释放。
构造函数定义:用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种。
特点:
该函数的名称和所在类的名称相同。
不需要定义返回值类型。
该函数没有具体的返回值。
注:所有的对象创建时,都需要初始化才能使用。
注意事项:一个类在定义时,如果没有定义过构造函数,那么该类中会自动生成一个空参数的构造函数,为了方便该类创建对象,完成初始化。如果在类中自定义了构造函数,那么默认的构造函数就没有了。
一个类中,可以有多个构造函数,因为它们的函数名称是相同的,所以只能通过参数列表进行区分。所以,一个类中如果出现多个构造函数,它们的存在是以重载体现的。
上面具体的介绍了一下构造函数的定义,特点等等。但是同样还有很多疑问,如他和一般函数有那些区别呢和构造代码块有什么区别呢等等问题。
构造函数和一般函数的区别:
构造函数是在对象创建时,被调用,用户对象的初始化。而且对象的初始化动作只执行一次。
一般函数,是对象创建完成后,需要调用才执行,可以被调用多次。
构造函数和一般函数的定义格式不同。
构造代码块和构造函数的区别:
构造代码块是给所有的对象进行初始化,也就说,所有的对象都会调用一个代码块。只要建立对象,就会调用这个代码块。
构造函数是给与之对应的对象进行初始化,它具有针对性。
问:构造代码块和构造函数的执行顺序是什么?
以一个简单的案例展示一个它们的执行顺序:
User类:
测试类:
执行结果:
结果分析:通过案例的验证,我们确定了构造代码块在构造方法之前执行。构造代码块在每次创建对象时都会执行。构造方法之被调用一次,而且是针对性的。
总结:书读百遍其义自见。只有基础扎实了,才能勇攀高峰。加油!!!加油!!!加油!!!
在我们的日常生活中,对于事物的描述无非就是描述事物的属性和行为。如:人的身高,体重,年龄等称为属性,人会说话,会跑步,会做饭等等称为行为。
而对于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); }
执行结果:
构造代码块 无参构造方法 构造代码块 有参构造方法
结果分析:通过案例的验证,我们确定了构造代码块在构造方法之前执行。构造代码块在每次创建对象时都会执行。构造方法之被调用一次,而且是针对性的。
总结:书读百遍其义自见。只有基础扎实了,才能勇攀高峰。加油!!!加油!!!加油!!!
相关文章推荐
- 黑马程序员:Java之介绍对象、封装、构造函数、构造代码块及this关键字
- 黑马程序员_Java基础_面向对象,封装,继承,单例设计模式,构造函数,构造代码块
- java构造代码块,构造函数和普通函数的区别和调用时间
- java_对象(构造函数和构造代码块)
- 黑马程序员——Java基础---面向对象(面向对象,类,对象,匿名对象,封装,构造函数,构造代码块,this,static,main,帮助文档,静态代码块,单例)
- Java基础知识之构造函数与构造代码块
- Java之静态代码块、构造代码块、与构造函数的用法
- java 构造函数 和 构造代码块
- Java中的构造函数、构造代码块、静态代码块
- Android(java)学习笔记188:关于构造代码块,构造函数的一道面试题(华为面试题)
- 黑马程序员 JAVA初级-面向对象 匿名对象、封装、构造函数、构造代码块、this
- 黑马程序员_Java基础_面向对象(概述、类与对象关系、成员变量、封装private、构造函数和构造代码块、this关键字)
- java中的静态代码块、构造代码块、构造函数执行顺序
- Java学习笔记——静态代码块,构造代码块,构造函数间的执行顺序
- [java起步]构造函数、构造代码快、静态代码块的执行顺序
- Java中构造函数、构造代码块、静态代码块等的执行顺序问题
- Java_浅谈构造函数、构造代码块与静态代码块的用法
- 黑马程序员_java静态代码块、构造代码块和构造函数的执行时间分析
- C++转Java自学之路(三)构造代码块、构造函数与static修饰符
- 【末世旅行之Java】构造函数与构造代码块