易截截图软件、单文件、免安装、纯绿色、仅160KB

Java学习笔记(1) 对象初始化顺序

在Java中,当一个对象被创建时,成员变量的初始化及构造方法的调用遵循以下顺序:
1. 将分配给对象的存储空间初始化成二进制的零。
2. 调用所有基类的构造方法。这个步骤会不断地反复递归下去,首先是构造这种层次结构的根,然后是下一层子类,等等,直到最底层的子类。
3. 按照声明的顺序调用成员的初始化方法。
4. 调用子类的构造方法主体。
下面举例说明。
class Glyph {
    Glyph(){
        System.out.println("Glyph() before draw()");
        draw();
        System.out.println("Glyph() after draw()");
    }
   
    void draw(){
        System.out.println("Glyph.draw()");
    }
}
class RoundGlyph extends Glyph {
    private int radius = 1;
   
    RoundGlyph(int r){
        radius = r;
        System.out.println("RoundGlyph.RoundGlyph(), radius = " + radius);
    }
   
    void draw(){
        System.out.println("RoundGlyph.draw(), radius = " + radius);
    }
    public static void main(String[] args) {
        new RoundGlyph(5);
    }
}
运行结果:
Glyph() before draw()
RoundGlyph.draw(), radius = 0
Glyph() after draw()
RoundGlyph.RoundGlyph(), radius = 5
可以看出,在输出结果的第二行中,由于步骤1的缘故,radius的值为0.


相关文档:

java中的reflect机制(转)

Java
Reflection (JAVA反射)    
Reflection 是 Java
程序开发语言的特征之一,它允许运行中的 Java
程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。例如,使用它能获得 Java
类中各成员的名称并显示出来。
Java
的这一能力在实际应用中也许用得不是很多,但 ......

通过 DAOFactory 的泛型写法来演示Java泛型的特殊用法

通过 DAOFactory 的泛型写法来演示Java泛型的特殊用法
小型项目中常常都没有用三方持久化框架,而大都是用公司或自行依据DAO模式封装的一些组件来完成数据库持久化动作,并且,通常为了更具可扩展性,常常使用抽象工厂模式来解耦合。
一、先看代码
1、简单工厂代码
/************************************************* ......

Java模拟HTTP的Get和Post请求

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.meth ......

REST风格的Java MVC框架:WebWind简介

几天前,刚看了IBM Developerworks上某个技术大牛做的关于设计REST风格的Java MVC开发框架的文章,今天在Google Code上发现了一个基于Java的REST风格的MVC开发框架,取名WebWind

“WebWind是一个Java MVC框架。和常见的MVC框架如Struts、WebWork不同,WebWind天生支持用户友好的URL,让Web应用程序对搜索引擎更加 ......

Java版的实现JavaScript中的eval()函数

实现步骤:
1.自定义一个Java类,该Java类中定义一个方法来包含需要被运行的代码。
2.动态编译刚刚生成的Java源码,不在磁盘上生成源码,而是直接编译内存中的Java源码。
3.动态加载刚刚创建编译的Java二进制码,编译好的Java二进制码不是在磁盘上,而是放在内存中,并定义自己的类加载器,负责加载内存中的class文件。 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号