类(class)是构造对象的模板或蓝图(就是具备相同的属性和功能的对象的抽象的集合)。由类构造(construct)对象的过程称为建立类的实例(instance)。 编程
类描述了具备相同特性(数据元素)和行为(功能)的对象集合,因此一个类实际上就是一个数据类型。网络
用 Java 编写的全部代码都位于某个类里面。标准 Java 库提供了几千个类,可用于各类目的,如用户界面设计、日期、日历和网络编程。尽管如此,在 Java 中仍是须要建立一些本身的类,以便描述你的应用程序所对应的问题领域中的对象。ide
在 Java 中,没有类就不能作任何事情,然而,并非全部的类都表现出面向对象的典型特征。例如 Math 类,Math 类只封装了功能,它不须要也没必要隐藏数据。因为没有数据,所以也没必要考虑建立对象的初始化它们的实例字段。函数
类名标准的命名规范: 类名是以大写字母开头的名词,若是类名由多个单词组成,每一个单词的第一个字母都应该大写(这种在一个单词中间使用大写字母的方式称为骆驼命名法(camel case)。以其自身为例,应该写成 CamelCase)。学习
OPP 的原则:设计
封装对象
封装(encapsulation,有时称为数据隐藏)是处理对象的一个重要概念。从形式上看,封装就是将数据和行为组合在一个包中,并对对象的使用者隐藏具体的实现方式。对象中的数据称为实例字段(instance field),操纵数据的过程称为方法(method)。做为一个类的实例,特定对象都有一组特定的实例字段值。这些值的集合就是这个对象的当前状态(state)。不管什么时候,只要在对象上调用一个方法,它的状态就有可能发生改变。blog
实现封装的关键在于,绝对不能让类中的方法直接地访问其余类的实例字段。程序只能经过对象的方法与对象数据进行交互。封装给对象赋予了“黑盒”特征,这是提升重用性和可靠性的关键。这意味着一个类能够彻底改变存储数据的方式,只要仍旧使用一样的方法操做数据,其余对象就不会知道也不用关心这个类发生的变化。继承
继承网络编程
经过扩展一个类来创建另一个类的过程称为继承(inheritance)。
继承让用户自定义 Java 类变得垂手可得,这就是:能够经过扩展其余类来构建新类。事实上,在 Java 中,全部的类都源自于 Object 类。
在扩展一个已有的类时,这个扩展后的新类具备所扩展的类的所有属性和方法。只须要在新类中提供适用于这个新类的新方法和数据字段就能够了。
传统的过程化程序设计,必须从顶部的 main 函数开始编写程序。在面向对象程序设计时没有所谓的“顶部”。学习 OOP 的初学者来讲经常会感受无从下手。答案是:首先从设计类开始,而后再往每一个类中添加方法。
识别类的一个简单经验是在分析问题的过程当中寻找名词,而方法对应着动词。
所谓“找名词与动词”原则只是一种经验,在建立类的时候,只有经验才能帮助你肯定哪些名词和动词重要。
在类之间,最多见的关系有
应该尽量地将相互依赖的类减至最少。若是类 A 不知道类 B 的存在,它就不会关心 B 的任何改变(这意味着 B 的改变不会致使 A 产生任何 bug)。用软件工程的术语来讲,就是尽可能减小类之间的耦合。
表达类关系的 UML 符号