1. 为对象定义类
1.类为对象定义属性和行为。
2.面向对象程序设计(OOP)就是使用对象进行程序设计。对象(object)代表现实世界中可以明确标识的一个实体。比如:一个学生,一张桌子,一个圆甚至一笔贷款都可以看作是一个对象。每个对象都有自己独特的标识、状态和行为。
一个对象的状态(state,也称为特征(property)和属性(attribute))是由具有当前值的数据域来表示的。一个对象的行为(behavior,也称为动作(action))是由方法定义的。调用对象的一个方法就是要求对象完成一个动作。
3.使用一个通用类来定义同一类型的对象。类是一个模板、蓝本或者说是合约,用来定义对象的数据域是什么以及方法是做什么的。一个对象是类的一个实例。可以从一个类中创建多个实例。创建实例的过程称为实例化(instantiation)。对象(object)和实例(instance)经常是可以互换的。
4.Java类使用变量定义数据域,使用方法定义动作。除此之外,类还提供了一种称为构造方法(constructor)的特殊类型的方法,调用它可以创建一个新对象。构造方法本身是可以完成任何动作的,但是设计构造方法是为了完成初始化动作,例如:初始化对象域的数据域。
2.使用构造方法构造对象
1.构造方法在使用new操作符创建对象的时候被调用。
2.构造方法是一种特殊的方法。它们有以下三个特殊性:
构造方法必须具备和所在类相同的名字
构造方法没有返回值类型,甚至连void也没有
构造方法是在创建一个对象使用new操作符时调用的。构造方法的作用是初始化对象。
3.通常,一个雷会提供一个没有参数的构造方法(例如:Circle())。这样的构造方法称为无参构造方法(no-arg或no-argument constructor)。
4.一个类可以不定义构造方法。在这种情况下,类中隐含定义一个方法体为空的无参构造方法。这个构造方法称为默认构造方法(default constructor),当且仅当类中没有明确定义任何构造方法时才会自动提供它。
3.通过引用变量访问对象
对象的数据和方法可以运用点操作符(.)通过对象的引用变量进行访问。
4. 引用变量和引用类型
1.从表面上看,对象引用变量中似乎存放了一个对象,但事实上,它只是包含了对该对象的引用。严格地讲,对象引用变量和对象是不同的,但是太多情况下,这种差异是可以忽略的。因此,可以简单地说myCircle是一个Circle对象,而不用冗长地描述说,myCircle是一个包含对Circle对象引用的变量。
2.在Java中,数组被看作是对象。数组是用new操作符创建的。一个数组变量实际上是一个包含数组引用的变量。
5.访问对象的数据和方法
在面向对象编程中,对象成员可以引用该对象的数据域和方法。在创建一个对象之后,它的数据和方法可以使用点操作符(.)来访问和调用,该操作符也称为对象成员访问操作符(object member access operator):
objectRefVar.dataField引用对象的数据域
objectRefVar.method(arguments)调用对象的方法
6.引用数据域和null值
ture和false是boolean类型直接量,而null是引用类型直接量。
7. 基本类型变量和引用类型变量的区别
每个变量都代表一个存储值的内存位置。声明一个变量时,就是在告诉编译器这个变量可以存放什么类型的值。对基本类型变量来说,对应内存所存储的值是基本类型值。对引用类型变量来说,对应内存所存储的值是一个引用,是对象的存储地址。
8.使用Java库中的类
8.1 Date类
可以使用Date类中的无惨构造方法为当前的日期和时间创建一个实例,它的getTime()方法返回自从GMT时间1970年1月1日算起至今流逝的时间,它的toString()方法返回日期和时间的字符串。
8.2 Random类
可以使用Math.random()获取一个0.0到1.0(不包括1.0)之间的随机double型值。
8.3 静态变量、常量和方法
1.静态变量被类中的所有对象所共享。静态方法不能访问类中的实例成员。
2.如果想让一个类的所有实例共享数据,就要使用静态变量(static variable),也称为类变量(class variable)。
3.实例方法可以调用实例方法和静态方法,以及访问实例数据域或者静态数据域。静态方法可以调用静态方法以及访问静态数据域。然而,静态方法不能调用实例方法或者访问实例数据域,因为静态方法和静态数据域不属于某个特定的对象。
8.4 可见性修饰符,数据封装,将方法传递给对象参数
可见性修饰符可以用于确定一个类以及它的成员的可见性。可以在类,方法和数据域前使用public修饰符,表示它们可以被任何其他的类访问,如果没有可见性修饰符,那么默认类,方法和数据域是可以被同一个包中的任何一个类访问的,这称作包私有或包内访问。
我们可以将对象传递给方法,同传递数组一样,传递对象实际上是传递对象的引用,Java只有一种参数传递方式,就是值传递,我们将在下一篇文章中通过大量的例子来研究对象和类