Java继承结构中类的初始化

不行怎么行,这是基础。下面程序请先分析,如果结果(用白色字体是输出结果)正确,说明您对java类的初始化已经很熟悉,算是过关,如果没有,那赶紧复习吧。

package nie.test.extend;

/** 子构造子的初始化过程:
* @author dotjar
* 1.父static域
* 2.父static块
* 3.子static域
* 4.子static块
* 5.父普通域
* 6.父普通块{}
* 7.父构造子
* 8.子普通域
* 9.子普通块{}
* 10.子构造子
*/
public class Test {
public static void main(String[] args) {
new Son("s");
}
}

class Father {
static protected String s = "father_static_property_string"; //1
protected String b = "father_normal_property_string"; //5
static {
s = "o"; //2
System.out.print("d");
System.out.print(s);
}
{
b="r"; //6
System.out.print("a");
System.out.print(b);
}

Father() {
this("@");
System.out.print("1"); //8
}

Father(String s) {
System.out.print(s); //7
}
}

class Son extends Father {
public static String s = "son_static_property_string"; //3
public String b = "son_normal_property_string"; //9
static {
s = "j"; //4
System.out.print("t");
System.out.print(s);
}
{
b = "3"; //10
System.out.print("6");
System.out.print(b);
}

Son() {
System.out.print("."); //11
}

Son(String s) {
this();
System.out.print("com"); //12
}
}

测试完自己的输出,可以用鼠标选中下一行,检查。

时间: 2024-10-31 09:52:55

Java继承结构中类的初始化的相关文章

解析Java虚拟机中类的初始化及加载器的父委托机制_java

类的初始化 在初始化阶段,Java虚拟机执行类的初始化语句,为类的静态变量赋予初始值. 在程序中,静态变量的初始化有两种途径: 1.在静态变量的声明处进行初始化: 2.在静态代码块中进行初始化. 没有经过显式初始化的静态变量将原有的值.   一个比较奇怪的例子: package com.mengdd.classloader; class Singleton { // private static Singleton mInstance = new Singleton();// 位置1 // 位置

JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想

JAVA之旅(三)--数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组 1.概念 数组就是同一种类型数据的集合,就是一个容器 数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素 数组的格式 //公共的 类 类名 public class HelloJJAVA { // 公共的 静态 无返回值 main方法 数组 public static void main(String[] str) { /** * 格式:元素类型

JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板

一.http协议回顾: 在上一篇文章中:JavaWeb学习之Servlet(一)----MyEclipse及Tomcat的配置,我们通过在浏览器输入url,就能看到在MyEclipse中编写的Servlet资源,效果如下: 上图中,整个过程是这样的:浏览器中输入url后,会通过hosts文件/dns服务器解析为IP地址,进而找到对应ip地址的服务器. 在这期间,浏览器会通过http协议发出请求.服务器端收到请求后,做了下面这些事: (1)分析出当前请求的是哪台虚拟主机: 查看Host请求头分析出

AngularJS深入探讨scope,继承结构,事件系统和生命周期_AngularJS

本文实例讲述了AngularJS的scope,继承结构,事件系统和生命周期.分享给大家供大家参考,具体如下: 深入探讨 Scope 作用域 每一个 $scope 都是类 Scope 的一个实例.类 Scope 拥有可以控制 scope 生命周期的方法,提供事件传播的能力,并支持模板渲染. 作用域的层次结构 让我们再来看看这个简单的 HelloCtrl 的例子: var HelloCtrl = function($scope){ $scope.name = 'World'; } HelloCtrl

java 继承-一个java继承中碰到的菜鸟问题

问题描述 一个java继承中碰到的菜鸟问题 public class Parent { public String a; public String b; public Parent getA(){ System.out.println("PPPPPPPPP"); return this; } public void Test(){ System.out.println(getA().a); System.out.println(getA().b); } } public class

java继承中的super调用

问题描述 java继承中的super调用 最近看到了下面一段代码,都是覆盖父类的方法,为什么onCreate方法就需要调用super.onCreate(..),而onActivityResult(..)方法就不需要调用super.onActivityResult(..)呢?求哪位解释一下 thanks! public class MainActivity extends Activity { ....... @Override protected void onCreate(Bundle sav

java继承问题求解答,急急急

问题描述 java继承问题求解答,急急急 为什么下面的代码,当子类与父类有相同成员变量时,创建子类对象子类引用出现空指针异常,求大神解答 class Cell{ int row; int col; Cell(int row,int col){ this.row=row; this.col=col; } String getCellInfo(){ return row+","+col; } } class Tetromino{ Cell[]cells; Tetromino(){ cell

初学者对于java继承、多态,子类对象的内存分配的一些问题,百度了好多,但感觉没有系统的,在此提问,希望前辈们传到授业解惑

问题描述 由于是初学者,所以有些表述可能有误,都只是自己的一些理解.我是纯初学者,看过两个星期的C++,之前也学过C.感觉看C++的时候,更容易去理解C++中的面向对象技术的实现,但看JAVA的时候,可能隔着一层虚拟机,有些实现很难理解.第一个问题:我了解到一个对象里面,隐含了一个引用this,可以用this来特别地引用本对象的成员或者函数,然后还有一个super关键字,书上说这个关键字不是一个引用,但怎么看都感觉这个super是一个指向本对象的父类类型的引用.我想问这个super到底是什么,如

java 继承父类结果为NULL

问题描述 java 继承父类结果为NULL 为什么这个继承父类的结果会出现NULL 1,源代码 package com.java.demo; public class Dervied extends Base { private String name = "dervied"; public Dervied() { tellName(); printName(); } public void tellName() { System.out.println("Dervied t