`

Java面向对象设计最佳实践 - 类的设计基础知识

阅读更多

在开始类的设计之旅之前,首先引入一些基础知识,方便后续更详细的实践设计文章之理解,也是本章的主要内容。

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 以后的版本。主要作为程序元信息配置和代码注解,提供了可读性和新的元信息配置。

分享到:
评论
7 楼 keke020 2010-09-01  
JDK5的泛型就是一个激动人心的改进.
6 楼 mercyblitz 2010-09-01  
JustDone 写道
在构造器中初始化类状态字段是一种相当坏的实践。
这句话不是很理解,博主能否给详细解释下。



类和对象的生命周期不同,构造器属于对象生命周期,应该初始化对象属性(状态)。而类的属性不应该被对象周期。再者,每次对象创建时,都会重新赋值,没有意义。最后,类状态可能会暴露对象状态,线程安全会出现问题。
5 楼 JustDone 2010-09-01  
在构造器中初始化类状态字段是一种相当坏的实践。
这句话不是很理解,博主能否给详细解释下。
4 楼 jychenok 2010-07-15  
hotjava 写道
不错,由于我们公司只能用jdk1.4所以很多东西没用过,不过有个问题请教下:

内部类的使用,除了在Swing的大量使用内部类,我自己写代码几乎没用过,希望能够讲解一下内部类的使用场景,何种情况下内部类具有不可替代性?

Annotation也有同样的问题。

感觉java这几年没有什么新东西,至少没有什么激动人心的东西出现。


多线程,GUI,数据库操作等...都可以用内部类...不会出现那么多类
3 楼 mercyblitz 2010-05-07  
文章发表了http://mercyblitz.iteye.com/blog/660853
2 楼 mercyblitz 2010-05-06  
hotjava 写道
不错,由于我们公司只能用jdk1.4所以很多东西没用过,不过有个问题请教下:

内部类的使用,除了在Swing的大量使用内部类,我自己写代码几乎没用过,希望能够讲解一下内部类的使用场景,何种情况下内部类具有不可替代性?

Annotation也有同样的问题。

感觉java这几年没有什么新东西,至少没有什么激动人心的东西出现。



过两天就发布新的文章,关于内置类的设计。
1 楼 hotjava 2010-05-06  
不错,由于我们公司只能用jdk1.4所以很多东西没用过,不过有个问题请教下:

内部类的使用,除了在Swing的大量使用内部类,我自己写代码几乎没用过,希望能够讲解一下内部类的使用场景,何种情况下内部类具有不可替代性?

Annotation也有同样的问题。

感觉java这几年没有什么新东西,至少没有什么激动人心的东西出现。

相关推荐

    面向对象程序设计-Java(第二版)

    面向对象程序设计-Java(第二...以上只是Java面向对象编程的部分基础知识,实际的课程内容可能还会涵盖更多的高级主题,如反射、注解、设计模式等。通过深入学习这些内容,开发者可以构建高效、可维护的Java应用程序。

    JAVA面向对象第一期PPT和演示代码

    通过这些知识点的学习,初学者可以逐步掌握Java面向对象编程的基础,并通过实际的编程练习提升技能。在后续的学习中,深入理解这些概念,结合实际项目经验,将使开发者更加熟练地运用Java进行面向对象的软件开发。

    《Java面向对象程序设计》课本例子源代码

    《Java面向对象程序设计》是一本深入探讨Java编程语言中面向对象特性的教材,而提供的源代码是为了辅助读者更好地理解和实践书中的理论知识。这些源代码涵盖了类、对象、封装、继承、多态等核心面向对象概念,是学习...

    《Java面向对象程序设计》例子源代码

    《Java面向对象程序设计》是一本深入探讨Java编程语言中面向对象特性的经典教材。这本书通过丰富的实例,帮助读者理解并掌握如何利用Java进行高效、可靠的面向对象编程。以下是一些核心的知识点: 1. 面向对象基础...

    java面向对象基础、高级pdf讲义

    Java面向对象基础与高级知识点详解 Java是一种广泛使用的面向对象编程语言,它的设计哲学是“一切皆对象”。本讲义将全面深入地介绍Java面向对象的基础概念和高级特性,帮助开发者从初学者到精通者逐步提升技能。 ...

    《面向对象程序设计——Java语言》电子课件(程细柱PPT)

    通过这个电子课件,学习者不仅可以掌握Java语言的面向对象编程技术,还能了解到实际项目开发中的一些最佳实践。程细柱的讲解方式通常深入浅出,结合实例,有助于学习者快速理解和掌握知识要点。

    《JAVA语言与面向对象程序设计》电子教案,程序源码,实验指导

    这些教案通常包括了从JAVA基础知识到高级概念的全面覆盖,如数据类型、控制结构、类与对象的关系,到接口、继承、多态以及集合框架、IO流、线程和网络编程等。邓丽强老师编写的教案不但系统性强,而且可能还包含了...

    面向对象程序设计(Java)教学课件

    以下将详细阐述Java面向对象编程中的核心知识点: 1. 类与对象:在Java中,类是对象的蓝图,定义了对象的属性(变量)和行为(方法)。对象是类的实例,具有类所定义的特征和功能。 2. 封装:封装是面向对象编程的...

    java面向对象编程思想2版本+源代码 (孙卫琴)

    以上知识点覆盖了《Java面向对象编程思想》的主要内容,通过学习这些内容,开发者可以深入理解Java面向对象编程的核心概念,并能运用到实际项目中去。配合源代码的实践,将更有利于理解和掌握Java编程的精髓。

    清华Java语言与面向对象程序设计

    《清华Java语言与面向对象程序设计》是一门深入讲解Java编程和面向对象设计的课程,旨在帮助学习者掌握Java编程的基础知识以及如何运用面向对象的思想进行软件开发。课程内容覆盖了从基本语法到高级特性,从理论概念...

    java面试题 Java培训PPT课件 Java面向对象程序设计 涵盖java各领域常见的基础知识 找工作面试可用 学习参考

    这份"Java面试题 Java培训PPT课件 Java面向对象程序设计"涵盖了Java各领域的基础知识,是求职者准备面试和开发者深入学习的理想资源。以下是这些PPT课件可能包含的一些核心知识点: 1. **面向对象程序设计**:面向...

    Java数据库系统项目开发实践--物流管理系统

    1. **Java编程基础**:项目基于Java语言开发,因此对Java的基础语法、面向对象编程理念、异常处理、集合框架(如List、Set、Map)等要有深入理解。 2. **Java EE技术**:项目可能涉及JavaServer Pages (JSP)、...

    Java面向对象流程图

    Java面向对象是编程领域中的一个核心概念,它是一种编程范式,强调数据和操作数据的方法组织在一起,模拟现实世界中的对象。在这个主题中,我们将深入探讨面向对象编程(OOP)的基本概念,包括类、对象、封装、继承...

    java面向对象代码实例

    通过这些实例,学习者可以深入理解Java面向对象编程的实际应用,逐步掌握如何设计和使用类,如何进行封装、继承和多态的实现,以及如何通过这些特性来提高代码的可读性和可维护性。对于初学者而言,这些实例是宝贵的...

    面向对象分析与设计

    8. **设计模式**:在面向对象设计中,设计模式是解决常见问题的成熟方案,如单例模式、工厂模式、观察者模式等,它们提供了在特定情境下的最佳实践。 9. **UML统一建模语言**:UML是面向对象分析与设计中的重要工具...

    Java中的面向对象编程Object-Oriented Programming in Java

    ### Java中的面向对象编程 #### 一、面向对象编程(OOP)概念 面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它使用“对象”来设计软件和实现程序。对象是数据(属性)和方法(操作这些数据的...

    Java面向对象程序设计

    Java面向对象程序设计是计算机科学中的一个重要领域,它基于面向对象编程(OOP)的概念,使得软件开发更加模块化和可维护。Java语言是实现这一编程范式的理想工具,因其强大的类库、跨平台兼容性和丰富的特性而广受...

    java毕业设计项目源码---蓝宇快递打印系统

    1. **Java基础**:本项目的基础是Java编程语言,涵盖了类、对象、接口、继承、封装、多态等面向对象编程的基本概念。此外,还可能涉及异常处理、集合框架(如ArrayList、LinkedList、HashMap等)、输入/输出流、线程...

    《Java Web开发实践教程--从设计到实现》资料

    4. **JPA(Java Persistence API)**:JPA是Java平台上的ORM(对象关系映射)标准,使得Java开发者可以使用面向对象的方式来操作数据库,简化了数据访问层的编程。 5. **JSF(JavaServer Faces)**:JSF是一个MVC...

    Java基础面试高频题解析-涵盖基础知识、面向对象特性及核心框架

    另外深入探讨了 Java 的基础数据类型及其自动类型转换和强制转换规则,自动装箱和拆箱机制、位运算、面向对象的核心概念(封装、继承、多态)、接口与抽象类的区别等。还包括一些高级特性,例如异常处理、I/O流处理...

Global site tag (gtag.js) - Google Analytics