Java 类(学习 Java 编程语言 023)

类(class)是构造对象的模板或蓝图(就是具备相同的属性和功能的对象的抽象的集合)。由类构造(construct)对象的过程称为建立类的实例(instance)。 编程

类描述了具备相同特性(数据元素)和行为(功能)的对象集合,因此一个类实际上就是一个数据类型。网络

用 Java 编写的全部代码都位于某个类里面。标准 Java 库提供了几千个类,可用于各类目的,如用户界面设计、日期、日历和网络编程。尽管如此,在 Java 中仍是须要建立一些本身的类,以便描述你的应用程序所对应的问题领域中的对象。ide

在 Java 中,没有类就不能作任何事情,然而,并非全部的类都表现出面向对象的典型特征。例如 Math 类,Math 类只封装了功能,它不须要也没必要隐藏数据。因为没有数据,所以也没必要考虑建立对象的初始化它们的实例字段。函数

类名标准的命名规范: 类名是以大写字母开头的名词,若是类名由多个单词组成,每一个单词的第一个字母都应该大写(这种在一个单词中间使用大写字母的方式称为骆驼命名法(camel case)。以其自身为例,应该写成 CamelCase)。学习

OPP 的原则:设计

  • 封装对象

    封装(encapsulation,有时称为数据隐藏)是处理对象的一个重要概念。从形式上看,封装就是将数据和行为组合在一个包中,并对对象的使用者隐藏具体的实现方式。对象中的数据称为实例字段(instance field),操纵数据的过程称为方法(method)。做为一个类的实例,特定对象都有一组特定的实例字段值。这些值的集合就是这个对象的当前状态(state)。不管什么时候,只要在对象上调用一个方法,它的状态就有可能发生改变。blog

    实现封装的关键在于,绝对不能让类中的方法直接地访问其余类的实例字段。程序只能经过对象的方法与对象数据进行交互。封装给对象赋予了“黑盒”特征,这是提升重用性和可靠性的关键。这意味着一个类能够彻底改变存储数据的方式,只要仍旧使用一样的方法操做数据,其余对象就不会知道也不用关心这个类发生的变化。继承

  • 继承网络编程

    经过扩展一个类来创建另一个类的过程称为继承(inheritance)

    继承让用户自定义 Java 类变得垂手可得,这就是:能够经过扩展其余类来构建新类。事实上,在 Java 中,全部的类都源自于 Object 类。

    在扩展一个已有的类时,这个扩展后的新类具备所扩展的类的所有属性和方法。只须要在新类中提供适用于这个新类的新方法和数据字段就能够了。

1. 识别类

传统的过程化程序设计,必须从顶部的 main 函数开始编写程序。在面向对象程序设计时没有所谓的“顶部”。学习 OOP 的初学者来讲经常会感受无从下手。答案是:首先从设计类开始,而后再往每一个类中添加方法。

识别类的一个简单经验是在分析问题的过程当中寻找名词,而方法对应着动词。

所谓“找名词与动词”原则只是一种经验,在建立类的时候,只有经验才能帮助你肯定哪些名词和动词重要。

2. 类之间的关系

在类之间,最多见的关系有

  • 依赖(dependence):即 “uses-a” 关系,是一种最明显的、最多见的关系。若是一个类的方法操做了另外一个类的对象,咱们就说一个类依赖于另个一个类。

    应该尽量地将相互依赖的类减至最少。若是类 A 不知道类 B 的存在,它就不会关心 B 的任何改变(这意味着 B 的改变不会致使 A 产生任何 bug)。用软件工程的术语来讲,就是尽可能减小类之间的耦合。

  • 聚合(aggregation):即 “has-a” 关系,是一种具体且易于理解的关系。聚合关系意味着类 A 的对象包含了类 B 的对象。
  • 继承(inheritance):即 “is-a” 关系,表示一个更特殊的类与一个更通常的类之间的关系。通常而言,若是类 A 扩展类 B,类 A 不但包含从类 B 继承的方法,还会拥有一些额外的功能。

表达类关系的 UML 符号
表达类关系的 UML 符号

相关文章
相关标签/搜索