1. 类的加载
众所周知,每个类的的编译代码存在于每个独立的文件中,通常类的加载是发生在创建类的第一个对象的时候,但当访问static域或static方法时,也会发生类的加载。
2. 类的继承与初始化
package com.andy;
/**
* @author Andy Leung<br>
* @version 1.1 $ 2010-11-21
*/
class Parent {
private int i = 9;
protected int j;
private static int x1 = printInit("static Parent.x1 initialized");
Parent() {
print("i = " + i + ", j = " + j);
j = 39;
}
protected static int printInit(String s) {
print(s);
return 47;
}
/**
* @param string
*/
protected static void print(String string) {
System.out.println(string);
}
}
public class Child extends Parent {
private int k = printInit("Child.k initialized");
private static int x2 = printInit("static Child.x2 initialized");
public Child() {
print("k = " + k);
print("j = " + j);
}
public static void main(String[] args) {
print("Child constructor");
Child b = new Child();
}
}
运行结果:
static Parent.x1 initialized
static Child.x2 initialized
Child constructor
i = 9, j = 0
Child.k initialized
k = 47
j = 39
总结一下:
- 程序怎么进行的 ?在Child 上运行java 时,所发生的第一件事就是试图访问Child .main()(一个static方法),于是加载器开始启动并找出Child 类的编译代码, 编译器注意到它有个基类(注意这是由extends引起的),于是加载基类,直到无基类。
- 接下,从根基类开始初始化static,直到最下面的导出类。
- why 从根基类到导出类,因为导出类的static初始化可能会以来与基类成员能否正确的初始化。
到这,必要的类加载完,可以开始创建对象了。
- 开始初始化对象,首先对象中的所有基本类型都会被设为默认值,对象的引用设为null(通过将对象内存设为二进制零值而一举生成)。
- 然后基类的构造器的调用
分享到:
相关推荐
### Java编程思想读书笔记 #### 一、Java与C++的区别及内存管理 在学习Java的过程中,我们常常会拿它与C++进行比较。这两门语言虽然有着相似之处,但也有许多不同点。 1. **内存管理:** - C++提供了更为底层的...
### JAVA编程思想笔记 #### 一、编程语言与Java特性 1. **编程语言类别**: - **机器语言**:直接与硬件交互的语言,由0和1组成。 - **汇编语言**:接近机器语言,使用助记符表示指令。 - **高级语言**:更接近...
- Java作为一种广泛使用的编程语言,其学习路径包括掌握基本语法、理解面向对象编程思想、熟悉标准库使用等。 - **JAVA发展概述** - Java的发展历程:从1995年由Sun Microsystems公司发布以来,Java经历了多次重大...
Java是一种广泛使用的面向对象编程语言,其设计思想主要基于对象、类、继承、封装和消息传递等核心概念。面向对象编程(OOP)旨在通过模拟现实世界中的实体来构建软件系统,使得代码更加易于理解和维护。 1. **面向...
- **静态块**:在类加载时执行一次,用于初始化静态变量。 **4.12 垃圾回收机制** - **垃圾回收概述**:Java自动管理内存,通过垃圾回收机制释放不再使用的对象所占用的内存。 - **对象被当作垃圾回收的条件**:当...
### Java私塾学习笔记整理 #### 第一章:Java入门 ...以上内容涵盖了Java基础知识的重要方面,从语言基础到高级特性,以及常见的开发技术和工具,帮助读者全面了解Java编程的基础知识和技术要点。
面向对象编程是Java的核心特性,本学习笔记涵盖了这一主题的深度探索,旨在帮助开发者深入理解并熟练运用面向对象的思想。2023年的版本更新可能包含最新的面试趋势和技术发展。以下将详细介绍Java面向对象编程的一些...
- 代码块用于初始化对象,分为实例初始化块和类初始化块。 6. **构造方法的私有化** - 私有化构造方法可以防止外部创建对象,常用于单例模式。 7. **Singleton模式(单例模式)** - 单例模式确保一个类只有一个...
### Java核心知识点详解 #### 一、Java的基本特性与...以上是基于提供的部分Java笔记内容进行的详细总结和解释,涵盖了Java的基本概念、语法特性以及面向对象编程的核心思想等多个方面,希望对你学习Java有所帮助。
- **对象创建与初始化**:使用 `new` 关键字创建对象,并通过构造方法进行初始化。 - **继承**:通过 `extends` 关键字实现类之间的继承关系。 #### static - **概念**:用于修饰成员变量和成员方法,表示它们属于...
- **场景初始化**:在游戏启动时加载和初始化场景的相关数据。 - **敌人与障碍物重置**:当Mario重新开始或进入新的场景时,需要重置场景内的所有元素。 #### 五、障碍物的开发 - **属性**:每个障碍物都有自己的...
1. **面向对象**:JavaConfig使用Java类进行配置,允许使用面向对象的编程思想,如继承、多态等。 2. **可读性强**:Java代码比XML更易读,更易于理解和维护。 3. **类型安全**:JavaConfig在编译时就能检查配置错误...
在类中,必须初始化实例对象. 使用 new 运算符创建结构对象时,将创建该结构对象,并且调用适当的构造函数。与类不同的是,结构的实例化可以不使用 new 运算符。如果不使用 new,那么在初始化所有字段之前,字段将...
- **定义**:提供了一种基于对象模型的查询方式,更符合面向对象的编程思想。 - **使用**:通过`Session.createCriteria`方法创建`Criteria`对象,然后添加查询条件进行数据检索。 #### 事务管理 - **事务**:一组...
这涉及到数组的初始化、遍历、排序等操作。 ##### 方法思想 方法思想关注于如何将复杂的问题分解为更小、更容易管理的部分,并通过调用方法来解决问题。 ##### 递归算法 递归是一种解决问题的方法,其中函数调用...
实验中的实现属于懒汉式,通过`getInstanse()`静态方法保证了线程安全地创建单例,只有当`config`为`null`时才会初始化一个新的`AppConfig`对象。这样,无论多少次调用`getInstanse()`,都只会返回同一个对象。 UML...