Java面向对象编程:类变量与实例变量详解及静态块应用

版权申诉
0 下载量 53 浏览量 更新于2024-06-28 收藏 79KB DOCX 举报
在Java语言程序设计的第三章《面向对象编程基础》补充中,我们主要探讨了类变量、实例变量、构造方法以及静态块的概念。这些概念是面向对象编程的核心组成部分。 1. **类变量与实例变量**: - 类变量(static):`public static int staticVar = 0;` 是一个属于类本身的变量,它在整个类的生命周期中只有一份副本,且在类加载时就进行初始化。例如,当你看到`staticVar = 1; instanceVar = 1;` 的输出,说明静态变量在构造方法执行时被初始化,并且每次类的实例化过程中,静态变量值递增。 - 实例变量(non-static):`public int instanceVar = 0;` 每个类的实例都有自己独立的副本,这意味着每个对象创建时都会初始化。如`instanceVar = 1`表示在第一个对象的构造方法中被初始化。 2. **构造方法**: 构造方法(constructor)用于初始化对象。在这个例子中,`public 类变量与实例变量()` 定义了一个构造方法,它会自动在创建类的新实例时执行。每次调用构造方法时,静态变量`staticVar`递增,实例变量`instanceVar`也增加,而`sum`属性也会累加。 3. **静态块与类的生命周期**: 静态块(static block)是包含在类中的代码段,它在类首次加载时执行。在提供的代码片段中,静态块`class Value { ... }`包含了变量`c`和`d`的声明,这些变量是静态的,因此在类初次加载时分配内存。 4. **对象的生命周期和访问权限**: - 对象(如`v1`)创建时,非静态内部类可以通过外部类的对象名访问,比如`ct1.v.c`和`ct2.v.d`。这表明外部类可以操作其内部类的状态。 - 对于静态内部类(如`Count`),可以直接通过外部类名访问,如`Count.v1.c`和`Count.v1.d`,这是由于静态内部类是类的一部分,不受特定对象实例的影响。 - 调用类方法的方式有两种:通过对象实例(如`v1.inc()`)或通过类名(如`Value.inc()`),这展示了面向对象的多态性,方法的调用可以根据上下文的不同灵活切换。 总结来说,这一部分深入讲解了Java面向对象编程中的基础概念,包括类变量、实例变量、构造方法和静态块,以及对象的生命周期和访问规则。理解这些概念有助于程序员编写高效、可维护的Java代码。
2023-06-10 上传