精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-05
最后修改:2010-05-05
在开始类的设计之旅之前,首先引入一些基础知识,方便后续更详细的实践设计文章之理解,也是本章的主要内容。 Java作为“全面”支持面向对象编程(OOP)语言,其吸取了其他OOP(比如C++、Smalltalk语言等特性)的优点,提供了面向对象的四种基本性质: 抽象性 、 封装性 、 继承性 和 多态性 。 Java语言以"类(Class)"为基本单位(或者模块),按照成员划分,其主要组成部分为:字段(Field)、方法(Method),构造器(Constructor),其中,在Java 5发布之后,注解(Annotation)也加入了Class的大家庭之中。按照结构来划分,主要分为申明语句(Declaration Statement)和块(Block)。其中,申明语句,字段的申明和接口中方法和常量定义(这里和C语言说法有点不同)。块(Block)是执行大于零条的执行语句,块中的变量是本地变量(Local Variable)。分为命名块和非命名块。命名块是有名称的块,大致分为方法(Method)和构造器(Constructor)和内置类(Inner/Nested Class)。(类是也是一种块,不过层次不同。而内置类(Inner/Nested Class),笔者把其归为字段之中)。非命名块,顾名思义,大致有类(Static Block)块、实例(Instance Block)和匿名内部类(Anonymous Class)。这些信息保存在JVM中的方法区中。注意,泛型类型参数在运行时进行了擦写,因此是不可见的。 字段(Field),主要表示类或者对象(实例)的状态(引用或者原生类型),也可以称为“属性”。对于类的字段而言,类中的字段,其生命范围是类范围,这种类状态的持久到JVM退出或者ClassLoader重载其类定义。相反,对象字段,其关联的生命范围是对象(实例),每个对象字段的状态相对独立的,当对象(实例)消亡后,其状态不复存在。最后一种特殊状态字段是“常量”(static final修饰),其生命周期是在JVM的常量池。 方法(Method),命名的控制类或者对象的有状态或无状态的执行模块,可称作类或者对象的“行为”。按照生命范围来来划分,有类方法和对象(实例)方法。其中对象(实例)方法又可划分为抽象和具体(普通)方法。方法是实现多态的重要手段,注意方法本身没有状态。 构造器(Constructor),主要用于初始化对象(实例)状态字段,值得一提的是,在构造器中初始化类状态字段是一种相当坏的实践。 内置类,由三类组成,有作为实例部分的内置类(Inner Class)、隶属于类的内置类(Nested Class)和在块中定义的内置类(Local Class)。 类块(Static Block),也可称为静态块。仅仅可视本类的静态成员,其主要用作初始化类成员变量或常量,当ClassLoader加载该类的时候,其生命周期仅仅一次加载执行,先定义先执行的原则。 实例块(Instance Block),也叫做对象块。和类块类似,可视所有的本类和对象成员,其生命周期开始在构造器调用之前,先定义先执行的原则。 注解(Annotation),作为语言新功能添加到了Java 5 以后的版本。主要作为程序元信息配置和代码注解,提供了可读性和新的元信息配置。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-05-06
不错,由于我们公司只能用jdk1.4所以很多东西没用过,不过有个问题请教下:
内部类的使用,除了在Swing的大量使用内部类,我自己写代码几乎没用过,希望能够讲解一下内部类的使用场景,何种情况下内部类具有不可替代性? Annotation也有同样的问题。 感觉java这几年没有什么新东西,至少没有什么激动人心的东西出现。 |
|
返回顶楼 | |
发表时间:2010-05-06
hotjava 写道 不错,由于我们公司只能用jdk1.4所以很多东西没用过,不过有个问题请教下:
内部类的使用,除了在Swing的大量使用内部类,我自己写代码几乎没用过,希望能够讲解一下内部类的使用场景,何种情况下内部类具有不可替代性? Annotation也有同样的问题。 感觉java这几年没有什么新东西,至少没有什么激动人心的东西出现。 过两天就发布新的文章,关于内置类的设计。 |
|
返回顶楼 | |
发表时间:2010-05-07
文章发表了http://mercyblitz.iteye.com/blog/660853
|
|
返回顶楼 | |
发表时间:2010-07-15
hotjava 写道 不错,由于我们公司只能用jdk1.4所以很多东西没用过,不过有个问题请教下: 内部类的使用,除了在Swing的大量使用内部类,我自己写代码几乎没用过,希望能够讲解一下内部类的使用场景,何种情况下内部类具有不可替代性? Annotation也有同样的问题。 感觉java这几年没有什么新东西,至少没有什么激动人心的东西出现。 多线程,GUI,数据库操作等...都可以用内部类...不会出现那么多类 |
|
返回顶楼 | |
发表时间:2010-09-01
在构造器中初始化类状态字段是一种相当坏的实践。
这句话不是很理解,博主能否给详细解释下。 |
|
返回顶楼 | |
发表时间:2010-09-01
JustDone 写道 在构造器中初始化类状态字段是一种相当坏的实践。
这句话不是很理解,博主能否给详细解释下。 类和对象的生命周期不同,构造器属于对象生命周期,应该初始化对象属性(状态)。而类的属性不应该被对象周期。再者,每次对象创建时,都会重新赋值,没有意义。最后,类状态可能会暴露对象状态,线程安全会出现问题。 |
|
返回顶楼 | |
发表时间:2010-09-01
JDK5的泛型就是一个激动人心的改进.
|
|
返回顶楼 | |
浏览 2993 次