java基础——类初始化块

package block;

/*
 *     类的代码块(初始化块)
 *     1.代码块作用:用来初始化类,对象
 *     2.可以用static修饰后成为静态代码块
 *     3.分类:静态代码块 和 非静态代码块
 *     
 *     静态代码块:
 *         >随着类的加载而执行,只执行一次
 *         >作用:初始化类信息
 *         >多个静态代码块按定义顺序执行        
 *         >不可以调用非静态结构
 *     非静态代码块:
 *         >随着每次new对象执行
 *         >作用:可以在创建对象时,对对象的属性进行初始化
 *         >多个代码块按定义顺序执行    
 *         >静态/非静态结构都可以调用
 *     
 *     属性赋值顺序:
 *         super static field
 *         super static block
 *         static field
 *         static block
 *         
 *         super field
 *         super block
 *         super constructor
 *         field
 *         block
 *         constructor
 * */

class Person{
    String name;
    int age;
    static String desc = "一个人";
    
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public Person() {
        super();
    }
    
    //static代码块
    static{
        System.out.println("hello static block");
    }
    
    //非static代码块
    {
        System.out.println("hello block");
    }
    
    public void eat() {
        System.out.println("吃饭");
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
    public static void info() {
        System.out.println("static method");
    }
    
}

public class BlockTest {
    public static void main(String[] args) {
        String desc = Person.desc;
        Person person = new Person();
        
    }
}

猜你喜欢

转载自www.cnblogs.com/zsben991126/p/12148127.html