• 让天下没有难学的技术
    多数学员都来自推荐,这就是口碑的力量

面向对象高级特性代码块

什么是代码块

1. 什么是代码块

①初始化块(代码块)作用:

对Java对象进行初始化

②程序的执行顺序:

声明成员变量的默认值

显式初始化、多个初始化块依次被执行(同级别下按先后顺序执行)

构造器再对成员进行赋值操作

2.静态代码块

一个类中初始化块若有修饰符,则只能被static修饰,称为静态代码块(static block ),当类被载入时,类属性的声明和静态代码块先后顺序被执行,且只被执行一次。

Java培训机构

static块通常用于初始化static (类)属性

class Person {

public static int total;

static {

total = 100;//为total赋初值

}

…… //其它属性或方法声明

}

3. 非静态代码块

概念:没有static修饰的代码块

特点:

① 可以有输出语句。

② 可以对类的属性、类的声明进行初始化操作。

③ 可以调用静态的变量或方法。

④ 若有多个非静态的代码块,那么按照从上到下的顺序依次执行。

⑤ 每次创建对象的时候,都会执行一次。且先于构造器执行

4 静态和非静态关系

非静态的本质是什么

非静态也可以称为动态, 意思是确定的, 在程序中对象的创建是不确定的, 因为只要new就会产生对象, 所以非静态的概念必然是和对象相关的.

静态的本质是什么

静态的就是确定的, 唯一的, 在程序中是稳定的, 和有无对象无关, 也和有多少对象无关, 只和类相关, 所以, 所以静态成员是稳定并唯一的.

如何互相使用

在非静态环境中可以中直接使用静态成员, 因为在非静态环境中, 对象必然是已经创建了, 对象既然已经创建, 类也肯定已经加载过了, 所以在使用上并不会有问题.

但是 在静态环境中却不可以直接使用非静态成员, 因为静态成员可以使用, 不要求对象,只要求类加载好就可以了, 但是类加载, 并不意味着一定要创建对象, 并且对象创建在哪里也不知道. 所以在静态环境中不可以直接访问非静态成员, 因为非静态成员隶属于对象, 所以在静态环境中只能通过创建对象, 并再通过对象来间接访问非静态成员.

 执行顺序

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

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

静态属性声明

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

非静态属性声明

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

构造器

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

a) 父类的静态属性声明

b) 父类的静态语句块或父类静态属性的显式赋值

c) 子类的静态属性声明

d) 子类的静态语句块或子类静态属性的显式赋值

e) 父类非静态属性的声明

f) 子类非静态属性的声明

g) 父类的非静态语句块或父类非静态属性的显式赋值

h) 父类构造器

i) 子类的非静态语句块或子类非静态属性的显式赋值

j) 子类构造器

想要了解跟多关于java培训课程内容欢迎关注尚硅谷java培训,尚硅谷除了这些技术文章外还有免费的高质量大java培训课程视频供广大学员下载学习。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注