相关最新代码已上传至我的GitHub了(https://github.com/WenyangSun/ThinkingInJava),后续例子没有在博客上更新。

1、在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。

package com.ietree.base.initialization;

// 在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。
class Window
{
Window(int maker)
{
System.out.println("Window(" + maker + ")");
}
} class House
{
House()
{
System.out.println("House()"); //
w3 = new Window(33); //
} Window w1 = new Window(1); // Window w2 = new Window(2); // void f()
{
System.out.println("f()"); //
Window w4 = new Window(4); //
} Window w3 = new Window(3); //
} // output:
// Window(1)
// Window(2)
// Window(3)
// House()
// Window(33)
// f()
// Window(4)
public class OrderOfInitialization
{
public static void main(String[] args)
{
House h = new House();
h.f(); //
}
}

2、初始化的顺序是先静态对象,而后是“非静态”对象,构造器可以看成是静态方法。

package com.ietree.base.staticintialization;

/**
* 初始化的顺序是先静态对象,而后是“非静态”对象,构造器可以看成是静态方法。
*/
class Bowl
{
public Bowl(int marker)
{
System.out.println("Bowl(" + marker + ")");
} void f1(int marker)
{
System.out.println("f1(" + marker + ")");
}
} class Table
{
static Bowl bowl1 = new Bowl(1); // public Table()
{
System.out.println("Table()"); //
bowl2.f1(1); //
} void f2(int marker)
{
System.out.println("f2(" + marker + ")");
} static Bowl bowl2 = new Bowl(2); //
} class Cupboard
{
Bowl bowl3 = new Bowl(3); //9 //14 // static Bowl bowl4 = new Bowl(4); // public Cupboard()
{
System.out.println("Cupboard()");//10 //15 //
bowl4.f1(2);//11 //16 //
} void f3(int marker)
{
System.out.println("f3(" + marker + ")");
} static Bowl bowl5 = new Bowl(5); //
} //output:
//Bowl(1)
//Bowl(2)
//Table()
//f1(1)
//Bowl(4)
//Bowl(5)
//Bowl(3)
//Cupboard()
//f1(2)
//Creating new Cupboard() in main
//Bowl(3)
//Cupboard()
//f1(2)
//Creating new Cupboard() in main
//Bowl(3)
//Cupboard()
//f1(2)
//f2(1)
//f3(1)
public class StaticIntialization
{
public static void main(String[] args)
{
System.out.println("Creating new Cupboard() in main");//
new Cupboard();//
System.out.println("Creating new Cupboard() in main");
new Cupboard(); //
table.f2(1); //
cupboard.f3(1);//
} static Table table = new Table(); // static Cupboard cupboard = new Cupboard(); //
}

3、类的创建过程是从基类向外扩散的,所以基类在导出类构造器可以访问它之前,就已经完成了初始化。

package com.ietree.base.reuseclass.extendskey;

class Art
{
Art()
{
System.out.println("Art constructor"); //
}
} class Drawing extends Art
{
Drawing()
{
System.out.println("Drawing constructor"); //
}
} // output:
// Art constructor
// Drawing constructor
// Cartoon constructor
public class Cartoon extends Drawing
{
public Cartoon()
{
System.out.println("Cartoon constructor"); //
} public static void main(String[] args)
{
@SuppressWarnings("unused")
Cartoon x = new Cartoon(); //
}
}

4、如果Java的基类拥有某个已被多次重载的方法名称,那么在子类中重新定义该方法名称并不会屏蔽其在基类中的任何版本

package com.ietree.base.reuseclass.hide;

class Homer
{
char doh(char c)
{
System.out.println("doh(char)");
return 'd';
} float doh(float f)
{
System.out.println("doh(float)");
return 1.0f;
}
} class Milhouse
{
} class Bart extends Homer
{
void doh(Milhouse m)
{
System.out.println("doh(Milhouse)");
}
} public class Hide
{
public static void main(String[] args)
{
Bart b = new Bart();
b.doh(1);
b.doh('x');
b.doh(new Milhouse());
}
}
// output:
// doh(float)
// doh(char)
// doh(Milhouse)

重读《Java编程思想》的更多相关文章

  1. 重读《Struts In Action》

    Figure   1.1. The Java Servlet API exposes the HTTP client/server protocol to the Java   platform. S ...

  2. 关于Spring的Controller及Struts的Action的多线程的注意

    struts是线程安全,并不是指多线程,而是指单态,当多个用户访问一个请求的时候,服务器内存中只有一个与之对应的action类对象,execute方法加上了同步关键字,如果你在action里加上一个全 ...

  3. struts中action名称反复导致的神秘事件

    近期由于项目需求变更.须要本人对当中的某个业务功能进行改动.本人依照前台页面找action,依据action找代码的逻辑进行了改动(公司项目是ssh框架,struts配置全部是通过注解的方式进行.配置 ...

  4. 实现Spring管理struts的Action

    struts2和spring的整合,关键点在于struts2中的action要纳入spring容器的管理中成为一个bean.  可以在struts2中配置:  <struts>      ...

  5. (五)Struts之Action类基础(二)

    上一章节末((三)Struts之Action类基础(一))介绍了如何获取用户输入数据的获取.接着就是在Struts中怎么把数据响应给用户端,这就必须要求我们把数据放到作用域中,然后才能显示到用户浏览器 ...

  6. JavaWeb_(Struts2框架)Struts创建Action的三种方式

    此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...

  7. Struts中Action三种接收参数的方式?

    前言: 前面已经有一篇随笔介绍了Struts2的大概原理.本文就Struts2中Action与jsp页面进行数据对接时介绍几种常见方法! 值栈ValueStack 3个Action Action1 p ...

  8. struts+service+action+数据库

    用户登录流程 1.jsp根据form表单中的action的login   <form action="/test02/login" method="post&quo ...

  9. 初次了解struts的action类

    Action类真正实现应用程序的事务逻辑,它们负责处理请求.在收到请求后,ActionServlet会为这个请求选择适当的Action 如果需要,创建Action的一个实例 调用Action的perf ...

  10. struts 在Action中访问web元素(request,session等)

    出发jsp: <?xml version="1.0" encoding="GB18030" ?> <%@ page language=&quo ...

随机推荐

  1. guzzle http异步 post

    use GuzzleHttp\Pool;use GuzzleHttp\Client;//use GuzzleHttp\Psr7\Request;use Psr\Http\Message\Respons ...

  2. create-react-app中img图片不现实

    场景:正常的情况下是这么引用图片,我的图片路径是 src/images/login-from-icon1.png <img src="../images/login-from-icon ...

  3. LeetCode 14 Longest Common Prefix(最长公共前缀)

    题目链接:https://leetcode.com/problems/longest-common-prefix/?tab=Description   Problem: 找出给定的string数组中最 ...

  4. 供安全工程师实用的SOC模型

    一.背景 如今,安全概念满天飞,什么安全运营中心(SOC).威胁情报(TI).态势感知等等不一而足,这些概念及其背后代表的安全思想都很好,不过很多产品为了迎合国内的工作汇报都做成了很多Dashboar ...

  5. Build step 'Execute Windows batch command' marked build as failure

    坑爹的Jenkis,在执行windows命令编译.NET项目的时候命令执行成功了,但是却还是报了这样一个错: Build step 'Execute Windows batch command' ma ...

  6. 【CF725G】Messages on a Tree 树链剖分+线段树

    [CF725G]Messages on a Tree 题意:给你一棵n+1个节点的树,0号节点是树根,在编号为1到n的节点上各有一只跳蚤,0号节点是跳蚤国王.现在一些跳蚤要给跳蚤国王发信息.具体的信息 ...

  7. 使用不同模板引擎beetl、FreeMarker、Velocity动态解析sql的方法

    1. String sql = null;if(null == renderType || renderType.equals(ConstantRender.sql_renderType_beetl) ...

  8. 记我的第一个python爬虫

    捣鼓了两天,终于完成了一个小小的爬虫代码.现在才发现,曾经以为那么厉害的爬虫,在自己手里实现的时候,也不过如此.但是心里还是很高兴的. 其实一开始我是看的慕课上面的爬虫教学视屏,对着视屏的代码一行行的 ...

  9. HDU 1890 - Robotic Sort - [splay][区间反转+删除根节点]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1890 Time Limit: 6000/2000 MS (Java/Others) Memory Li ...

  10. POJ 2342 - Anniversary party - [树形DP]

    题目链接:http://poj.org/problem?id=2342 Description There is going to be a party to celebrate the 80-th ...