一、代码块:

package 面向对象.代码块;
/***
 * 代码块:
 * 在类中或方法当中使用{}括起来的一段代码,就称它是一个代码块
 *  1. 局部代码块:直接定义在方法内部的代码块,在调用方法的时候执行。
 *  2. 初始化代码块: 直接在类当中定义的代码块,初始化代码块在运行时,还是要把它放到构造方法当中。
 *  3. 静态代码块: 在初始化代码块前面加上static. 在什么时候执行?
 *     在加载字节码时就会自动调用.在主方法之间执行的。 只执行一次。
 *    
 */                   
public class Test {
    static{
        System.out.println("静态代码块已运行!");
    }
    
    //它是每创建一个对象,就会调动一次。
    {
        int b=10;
        System.out.println("初始化代码块执行");
    }
    
    Test(){
        System.out.println("------");
    }
    void myxq() {
    {
        //代码块当中定义的变量,我们称它是局部变量
        int a =10;
        System.out.println(a);
      }
    }
    
    public static void main(String[] args) {
        System.out.println("main执行");
        new Test();
        //new Test();
    }
}

总结:

代码块与final 关键字

代码块与final 关键字

代码块与final 关键字

代码块与final 关键字

1. 类的加载,当第一次创建该类对象的时候,加载到内存当中

在加载时,会执行static

2.字段初始化问题

2.1 静态字段初始化,是在静态代码块当中初始化

2.2 非静态的字段初始化,它是在构造器当中做的初始化

3.子类构造器默认会调用父类的构造器

1-->

二、final 关键字

final class SuperClass{
    final String name ="zs";
    final void test()
    {
        System.out.println(1);
        // final int a =10;
        // a=20;
    }
    
}
//继承:1.减少了重复代码。2.破坏了我们的封装,它可去访问父类当中的实现细节.
// 2. 覆盖了父类当中的方法
/***
 * final: "最终,不可修改的",保证数据安全,子类只能用,不能修改
 *  可以修饰:
 *  字段:不能再去修改字段
 *  方法:子类开就能再去覆盖该方法
 *    类:该类就不能再去被继承了
 *    
 *   final 修饰字段时,字段是没有初始值,必须得要自己手动设置初始值。不加的话,会报错。
 *   final 修改变量,就代表是一个常量.命令规则:所有的字母都大写MAX_VALUE
 *    
 *    final 可以在局部代码块当中使用
 *    如果final 修饰的是基本数据类型,代表值不能去修改了
 *    如果final 修饰的是一个引用数据类型,代表地址不能再去修改了
 *    
 *
 */
class SubClass extends SuperClass{
    int age =10;
    void test()
    {
        System.out.println(2);
         final int a =10;
        //a=20;
    }
    
}

public class Test {
    public static void main(String[] args) {
     final  SubClass sub = new  SubClass();
        System.out.println(sub.age);
        sub = new subClass()
        sub.test();
        sub.name="ls"
        System.out.println(sub.name);
    }
}

 

相关文章: