黑马程序员技术交流社区
标题:
代码块,静态代码块,构造代码块,构造函数之间的关系
[打印本页]
作者:
Morrfree
时间:
2015-8-4 23:33
标题:
代码块,静态代码块,构造代码块,构造函数之间的关系
刚刚学完继承,尝试着总结了下代码块,静态代码块,构造代码块,构造函数之间的关系,大家看看有什么不妥,共同进步...
代码块:
使用{}括起来的代码被称为代码块,根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块.
静态代码块:
在类中方法外出现,并加上static修饰.
作用:给类进行初始化,在加载的时候执行一次.
构造代码块:
在类中方法外出现,在对象的创建之前执行一次.
构造函数:
在类中方法外出现,用于给对象成员变量进行初始化.
在继承中运行的先后顺序:
当子类开始创建对象,静态代码块父类和子类的加载而加载,加载完成之后,java虚拟机调用子类的构造方法,会先调用父类的构造方法super(参数列表),然后父类的构造代码块开始加载,加载完成之后,父类的构造函数开始加载,等父类的成员变量初始化完成之后,子类开始初始化自己特有的成员变量,同样也是先运行构造代码块,在运行构造方法.
作者:
一枚小小媛
时间:
2015-8-4 23:47
package bean;
import demo.StringReplace;
/**
* @author 小媛
*
*/
public class Person {
private StringReplace name;
private int age;
static{
System.out.println("静态代码块");
}
public Person() {
super();
System.out.println("无参构造函数");
}
public Person(StringReplace name, int age) {
super();
this.name = name;
this.age = age;
System.out.println("有参构造函数");
}
public StringReplace getName() {
return name;
}
public void setName(StringReplace name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void eat(){
System.out.println("person类的eat方法");
}
}
复制代码
还可以通过打印 看一看它们的先后循序和是否被调用
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2