对象与类
在学习类和对象之前,我们先来回顾下以前学习过的知识,首先我们看下这张图这个人是谁?
始皇帝最大的贡献是什么呢?
始皇帝还做了更重要的事情
度量衡的统一大大提高了中国人生产力的效率。
那么看完这些内容后呢,我们来回顾一下前面学习的编程语言的基本数据类型。
基本数据类型及String
byte 存储值范围 整数-128~127
short 存储值范围 整数-32768~32767
int 存储值范围 整数-21474483648~21474483647
long 存储值范围 整数-9223372036854775808~9223372036854775807
float 存储值范围 浮点数,小数点可以精确到6位
double 存储值范围 浮点数,小数点可以精确到15-16位
char 存储值范围 单个字符,用’’单引号引起来,‘\u0000’~’\uFFFF’
boolean 存储值范围 boolean状态,取值true或false
String 存储值范围 字符串,用””双引号引起来的字符串都可以存
一般高级编程语言都具有这些类型。其实我们描述现实生活中的任何事物都可以通过这些基本数据类型去描述,大家想一下:
如果一个新的事物不是一个基本数据类型怎么办?
现实生活中任何复杂的数据类型都是由基本的数据类型组成的。有的同学呢对这个观点抱有疑问,我们来回顾一下,这个是我们小学的数学。
先假设你有一只兔子。
假设有人又给了你另一只兔子。
现在,数一下你所拥有的兔子数量,你会得到结果是两只。也就是说一只兔子加一只兔子等于两只兔子,也就是一加一等于二。
1 + 1 = 2
这就是算术的运算方法了。
那么,现在你已经对算术的基本原理有了一定了解,就让我们来看一看下面这个简单的例子,来把我们刚刚学到的知识运用到实践中吧。
好,大家看到这一堆运算公式相信大家已经崩溃了,但是它最基本的数理基础还是1 + 1 = 2.
我们再来看例外一个案例
有没有3元的RMB呢?为什么没有90块的面额?
其实我们只要基本数据类型定义好,任何复杂的数据类型都可以用基本的数据类型去表示。
面向对象就是使用对象进行程序设计。对象代表现实世界中可以明确标识的一个实体。例如:一个学生,一张桌子,一个圆,一个按钮甚至一笔贷款都可以看着一个对象。每个对象都有自己独特的标识、状态和行为。
分类是人类认识客观世界的基本方法,人类认识客观世界是把具有相同性质的对象抽象成类。例如动物,植物,人类,鸟类。
使用一个通用类来定义同一类型的对象(面向对象方法中的类描述了问题空间中一组由相同的属性(attribute)和行为的对象。)类是一个模板,蓝本或者说是合约,用来定义对象的数据域是什么以及方法是做什么的。一个对象是类的一个实例。可以从一个类中创建多个实例。类和对象之间的关系类似于⬇
可以用一种配方做出任意多的冰淇淋处来。下图展示名为Circle的类和它的三个对象。
接下来我们通过几个实际案例来讲解如何用基本的数据类型描述复杂的事物。
用类和对象表示现实世界,用消息和方法来模拟现实世界
- 一个对象的状态(state,也称未特征(property)或属性(attribute))是由具有当前值的数据域来表示的。例如:圆对象具有一个数据域radius,它是标识圆的属性。一个矩形对象具有数据域width和height,它们都是矩形的属性。
- 一个对象的行为(behavior,也称为动作(action))是由方法定义的。调用对象的一个方法就是要求对象完成一个动作。例如:可以为圆设置半径,可以计算圆的面积,还可以获取它的周长等。
Java类使用变量定义数据域,使用方法定义动作。除此之外,类还提供了一种称为构造方法(constructor)的特殊类型的方法,调用它可以创建一个新对象。构造方法本身是可以完成任何动作的,但是设计构造方法是为了完成初始化动作,例如:初始化对象的数据城。
Class Circle{ //数据域,描述对象的属性,表示半径 double radius = 1; // 构造方法 Circle(){ } // 构造方法 Circle(double newRadius){ radius = newRadius; } //返回这个圆的面积 double getArea(){ return radius * radius * Math.PI; } //返回这个圆的周长 double getPerimeter(){ return 2 * radius * Math.PI; } //给这个圆对象设置一个新的半径 void setRadius(double newRadius){ radius = newRadius; } }
Circle类与目前所见过的所有其它类都不同,它没有main方法,因此是不能运行的,它只是对圆对象的定义。
类的模板和对象的图示可以使用统一建模语言UML的图形化符号进行标准化,如下图,这种表示方法称为UML类图或简称为类图。