定义对象的类

 面向对象程序设计(OOP)就是使用对象进行程序设计。对象(object)代表现实世界中可以明确标识的一个实体。例如:一个学生、一张桌子、一个圆、一个按钮甚至一笔贷款都可以看做是一个对象,每个对象都有自己独特的标识、状态和行为。

对象的状态(state,也称之为特征(property)或属性(attribute))是指那些具有它们当前值的数据域。例如:圆对象具有一个数据域radius,它是标识圆的属性。一个矩形对象具有数据域width和height,它们都是标识矩形的属性

一个对象的行为(behavior,也称之为动作)是由方法定义的。调用对象的一个方法就是要求对象完成一个动作。例如:可以为圆对象定义一个名为getArea()的方法。圆对象可以调用getArea()返回圆的面积

java类使用变量定义数据域,使用方法定义动作。除此之外,类还提供了一种称为构造方法的特殊类型的方法,调用它可以创建一个新对象。构造方法本身是可以完成任何动作的,但是设计构造方法的初衷是为了完成初始化动作,例如:初始化对象的数据域

 构造方法是一种特殊的方法。它们具有以下三个特殊性:

1) 构造方法必须具备和所在类相同的名字
2)构造方法没有返回类型,甚至连void也没有
3)构造方法是在创建一个对象使用new操作符时调用的。构造方法的作用是初始化对象。

通常,一个类会提供一个没有参数的构造方法。

通过引用变量访问对象

要给新创建的对象在内存中分配空间。它们可以通过引用变量来访问。

对象是通过对象引用变量来访问的,该变量包含对对象的引用,

一个类基本上等同于一个程序员定义的类型。一个类就是一种引用类型,这意味着任何类型为类的变量都可以引用该类的一个实例

Circle myCircle= new Circle();

变量myCircle中放的是对Circle对象的一个引用。

访问对象的数据和方法

在创建一个对象之后,它的数据和方法可以使用圆点运算符(.)来访问和调用,该运算符也称为对象成员访问运算符

objectRefVar.dataField 引用对象的数据域
objectRefVar.method调用对象的方法

注意:Math.methodName 来调用Math类中的方法。那么能否用Circle.getArea()来调用getArea方法呢?答案是不能.Math类中的所有方法都是用关键字static定义的静态方法。但是,getArea()是实例方法,因此它是非静态的。它必须使用objectRefVar.methodName形式从对象调用。

基本类型变量和引用类型变量的区别

每个变量都代表一个存储值的内存位置。声明一个变量时,就是在告诉编译器这个变量可以存放在什么类型的值。对基本类型变量来说,对应内存所存储的值是基本类型值。对引用类型变量来说,对应内存所存储的值是一个引用,是对象的存储地址。

将一个变量赋值给另一个变量时,另一个变量就被赋了同样的值。对基本类型变量而言,就是将一个变量的实际值付给另一个变量。对引用类型变量而言,就是将一个变量的引用赋给另一个变量。

  引用类型变量 执行完成C1=C2后,C1指向C2所指的同一个对象。C1以前引用的对象就不再有用,因此,现在它就成为垃圾。垃圾会占用内存空间。Java运行系统会检测垃圾并自动回收它所占的垃圾,这个过程叫垃圾回收。