java+抽象类中的代码块和静态代码块
时间: 2024-06-13 07:09:30 浏览: 6
在Java中,抽象类中的代码块和静态代码块的执行顺序如下:
1. 父类静态代码块:在类加载时执行,且只执行一次。
2. 子类静态代码块:在类加载时执行,且只执行一次。
3. 父类代码块:在创建父类实例时执行,每次创建实例都会执行一次。
4. 父类构造方法:在父类代码块执行完后执行。
5. 子类代码块:在创建子类实例时执行,每次创建实例都会执行一次。
6. 子类构造方法:在子类代码块执行完后执行。
静态代码块是在类加载时执行的,用于初始化静态变量或执行一些只需要执行一次的操作。抽象类中的静态代码块和普通类中的静态代码块执行顺序相同,即在父类静态代码块之后、子类静态代码块之前执行。
代码块是在创建对象时执行的,用于初始化实例变量或执行一些需要在对象创建时执行的操作。抽象类中的代码块和普通类中的代码块执行顺序相同,即在父类代码块之后、子类代码块之前执行。
下面是一个抽象类中静态代码块和代码块的示例:
```java
abstract class Animal {
static {
System.out.println("Animal static block");
}
{
System.out.println("Animal block");
}
public Animal() {
System.out.println("Animal constructor");
}
}
class Dog extends Animal {
static {
System.out.println("Dog static block");
}
{
System.out.println("Dog block");
}
public Dog() {
System.out.println("Dog constructor");
}
}
public class Main {
public static void main(String[] args) {
new Dog();
}
}
```
输出结果为:
```
Animal static block
Dog static block
Animal block
Animal constructor
Dog block
Dog constructor
```