JAVA基础09对象和类

本文详细介绍了JAVA中的对象和类的概念,包括如何定义类、使用构造方法创建对象、通过引用变量访问对象的方法和数据域。此外,讲解了Java库中如Date、Random和Point2D类的使用,以及静态变量、常量和方法的特点。文章还讨论了对象的可见性修饰符、数据域封装、向方法传递对象参数以及对象数组等核心概念。
摘要由CSDN通过智能技术生成

9. 对象和类

9.1 为对象定义类

类为对象定义属性和行为

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

一个对象的状态(state也称为特征property) 或属性attribute)) 是由具有当前值的数据域来表示的。例如圆对象具有一个数据域 radius, 它是标识圆的属性个矩形对象具有数据域 width height, 它们都是描述矩形的属性

个对象的行为behavior, 也称为动作action))是由方法定义的调用对象的一个方法就是要求对象完成一个动作。例如可以为圆对象定义一个名为 getAreaO getPerimeter) 的 方法圆对象可以调用 getArea() 返回圆的面积调用 getPerimeter) 返回它的周长还可以定义 setRadius(radius) 方法圆对象可以调用这个方法来修改它的半径。

使用一个通用类来定义同一类型的对象类是一个模板蓝本或者说是合约用来定义对象的数据域是什么以及方法是做什么的。一个对象是类的一个实例可以从一个类中创建多个实例。创建实例的过程称为实例化instantiation)对象object) 和实例instance)经常是可以互换的。类和对象之间的关系类似于苹果派配方和苹果派之间的关系。可以用一种配方做出任意多的苹果派来。显示名为 Circle 的类和它的三个对象

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

 

 

9.2 使用构造方法构造对象

构造方法在使用 new 操作符创建对象的时候被调用

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

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

构造方法具有和定义它的类完全相同的名字和所有其他方法一样构造方法也可以重载(也就是说可以有多个同名的构造方法但它们要有不同的签名这样更易于用不同的初始数据值来构造对象。

一个常见的错误就是将关键字 void 放在构造方法的前面例如

public void Circle() { 
}

在这种情况下Circle( )是一个方法而不是构造方法

构造方法是用来构造对象的为了能够从一个类构造对象使用 new 操作符调用这个类的构造方法,如下所示

new ClassName(arguments);

例如new Circle( )使用Circle 类中定义的第一个构造方法创建一个 Circle 对象。new Circle(25)调用 Circle 类中定义的第二个构造方法创建一个 Circle 对象

通常一个类会提供一个没有参数的构造方法例如Circle( ) )这样的构造方法称 为无参构造方法(no - arg 或 no - argument constructor)。— 个类可以不定义构造方法在这种情况下类中隐含定义一个方法体为空的无参构造方法。这个构造方法称为默认构造方法default constructor)当且仅当类中没有明确定义任何构造方法时才会自动提供它。

 

 

9.3 通过引用变量访问对象

9.3.1 引用变量和引用类型

对象是通过对象引用变量reference variable)来访问的该变量包含对对象的引用使用如下语法格式声明这样的变量:

ClassName objectRefVar;

本质上来说一个类是一个程序员定义的类型类是一种引用类型reference type),这意味着该类类型的变量都可以引用该类的一个实例。下面的语句声明变量 myCircle 的类型是 Circle 类型

Circle myCircle;

变量 myCircle 能够引用一个 Circle 对象下面的语句创建一个对象并且将它的引用赋给变量 myCircle:

myCircle = new Circle();

采用如下所示的语法可以写一条包括声明对象引用变量创建对象以及将对象的引用赋值给这个变量的语句。

ClassName objectRefVar = new ClassNaroe():

下面是一个例子

Circle myCircle = new Circle();

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

注意从表面上看对象引用变量中似乎存放了一个对象但事实上它只是包含了对该对象的引用。严格地讲对象引用变量和对象是不同的但是大多數情况下这种差异是可以忽略的。因此可以简单地说 myCircle 是一个 Circle 对象而不用冗长地描述说, myCi rcle 是一个包含对 Circle 对象引用的变量

注意Java 数组被看作是对象數组是用 new 操作符创建的一个数组变量实际上是一个包含数组引用的变量。

 

9.3.2 访问对象的数据和方法

在面向对象编程中对象成员可以引用该对象的数据域和方法在创建一个对象之后,它的数据和方法可以使用点操作符( 来访问和调用该操作符也称为对象成员访问操作符 (object member access operator)

  • objectRefVar.dataField 引用对象的数据域
  • obj
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值