尚硅谷JavaSE基础

7.3.2 执行顺序

1. 创建对象时, 在同一个类中执行顺序

在同一个类中, 如果创建这个类的对象, 执行顺序是

静态属性声明

静态语句块或静态属性的显式初始化

非静态属性声明

非静态语句块或非静态属性的显式初始化

构造器

2. 创建对象时, 有继承关系存在时执行顺序

  1. 父类的静态属性声明
  2. 父类的静态语句块或父类静态属性的显式赋值
  3. 子类的静态属性声明
  4. 子类的静态语句块或子类静态属性的显式赋值
  5. 父类非静态属性的声明
  6. 子类非静态属性的声明
  7. 父类的非静态语句块或父类非静态属性的显式赋值
  8. 父类构造器
  9. 子类的非静态语句块或子类非静态属性的显式赋值
  10. 子类构造器

7.4 final关键字

7.4.1 final关键字的含义

1. final的作用

在Java中声明类、属性和方法时,可使用关键字final来修饰,表示“最终”。

final标记的类不能被继承。提高安全性,提高程序的可读性。

比如:String类、System类、StringBuffer类

final标记的方法不能被子类重写。

比如:Object类中的getClass()。

final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只能被赋值一次。

final标记的成员变量必须在声明的同时或在每个构造方法中或代码块中显式赋值,然后才能使用。

比如:final double PI=3.14;

7.4.2 final修饰类

final class A{

}

class B extends A{     //错误,不能被继承。

}

中国古代,什么人不能有后代,就可以被final声明,称为太监类!

7.4.3 final修饰方法

class A{

    public final void print(){

        System.out.println(“A”);

    }

}

class B extends A{     

    public void print(){   //错误,不能被重写。

        System.out.println(“尚硅谷”);

    }

}

7.4.4 final修饰变量

class A{

        private final String INFO = “atguigu”;  //声明常量

        public void print(){

                  //INFO = “尚硅谷”;

         }

}

特点:常量名要大写,内容不可修改。——如同古代皇帝的圣旨。

注:public static final:全局常量

1. 空final量和final修饰局部变量

public final class Test {

 

public static int totalNumber = 5 ;

public final int ID; // 空final量, 在构造器中初始化

public Test(){

ID = ++totalNumber;  //可在构造方法中给final变量赋值

}

public static void main(String[] args) {

Test t = new Test();

System.out.println(t.ID);

final int I = 10;

final int J;

J = 20;

J = 30; // 不可以再次赋值

}

}