JAVA 构造代码块与局部代码块
形式:{ 代码… }
构造代码块
构造代码块的特点
位置: 在类的内部,在方法的外部
作用: 用于抽取构造方法中的共性代码
执行时机: 每次调用构造方法前都会调用构造代码块
注意事项: 构造代码块优先于构造方法加载
/**
* 构造代码块:{}
*1.位置:类里方法外
* 2.执行时机:每次创建对象时,都会执行构造代码块,并且优先于构造方法执行
* 3:作用:用于提取所有构造方法的共性功能
*/
package cn.tedu.oop2;
/**本类用于测试代码块*/
public class TestBlock {
public static void main(String[] args) {
// System.out.println("今天特别冷,注意保暖");
Pig p = new Pig();
Pig p2 =new Pig();
Pig p3 = new Pig(666);
Pig p4 =new Pig("xxxx");
}
}
//1.创建一个小猪类用来测试
class Pig{
//2.定义属性
String food;//食物
int age;//年龄
//5.创建本类的构造代码块
//4.提供本类的无参构造
/**
* 构造代码块:{
}
*1.位置:类里方法外
* 2.执行时机:每次创建对象时,都会执行构造代码块,并且优先于构造方法执行
* 3:作用:用于提取所有构造方法的共性功能
*/
{
System.out.println("我是一个构造代码块");
System.out.println("咱可是黑猪肉222~");
}
//4.提供本类的无参构造与含参构造
public Pig(){
System.out.println("无参构造");
}
public Pig(int n){
System.out.println("含参构造1");
}
public Pig(String n){
System.out.println("含参构造2");
}
//3.定义普通方法
public void eat(){
System.out.println("小猪爱吃菜叶子");
}
}
局部代码块
位置: 在方法里面的代码块
作用: 通常用于控制变量的作用范围,出了花括号就失效
注意事项: 变量的作用范围越小越好,成员变量会存在线程安全的问题
练习:测试代码块的加载顺序
执行顺序:构造代码块->构造方法->普通方法->局部代码块
- 1.当创建对象时,会触发构造函数
- 2.创建对象时,也会触发构造代码块,并且构造代码块优先于构造方法执行
- 3.我们创建好对象后,才能通过对象调用普通方法
- 4.如果普通方法里有局部代码块,才会触发对应的局部代码块