009 对象和类

本贴最后更新于 2256 天前,其中的信息可能已经渤澥桑田

本文为《Java 语言程序设计》第十版 章节笔记

9.1 为对象定义类

类 为 对象定义属性和行为。

对象(object)代表现实世界装可以明确表示的一个实体。

每一个对象都有自己独特的标识、状态和行为。

  • 一个对象的状态(state ,也称为特征(proterty)或属性(attribute))是由具有当前值的数据域来表示的。
  • 一个对象的行为(behavior,也称为动作(action))是由方法定义的。

类 是一个模板、蓝本或者说是合约,用来定义对象的数据域是什么以及方法时做什么的。

一个对象是类的一个实例。可以从一个类中创建多个实例。

创建实例的过程称为实例化(instantitation)。对象(object)和实例(instance)经常时可以互换的。

9.4 使用构造方法个构造对象

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

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

9.5 通过引用变量访问对象

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

每个变量都代表一个储存值的内存位置。

  • 对基本类型变量来说,对应内存所储存储的值是基本类型值。
  • 对引用类型变量来说,对应内存所存储的值是一个引用,是对象的存储地址。

如果你认为不再需要某个对象时,可以显式地给该对象的引用变量附 null 值。如果该对象没有被任何引用变量所引用,Java 虚拟机将自动回收它所占的空间。

9.6 使用 Java 库中的类

Date 类

java.util.Date
+Date()
+Date(elapseTime: long)
+toStrin(): String
+getTime(): long
+setTime(elapseTime: long): void

Random 类

java.util.Random
+Random()
+Random(seed: long)
+nextInt(): int
+nextInt(n: int): int
+nextLont(): long
+nextDouble(): double
+nextFloat(): float
+nextBoolean(): boolean

9.7 静态变量、常量和方法

要声明一个静态变量或定义一个静态方法,就要在这个变量或方法的声明中加上修饰符 static

  • 调用静态方法:className.staticMethod
  • 调用静态变量:className.staticVariable

9.8 可见性修饰符

  • public 修饰的 类、方法、数据域 可被任何其他类访问
  • 没有可见性修饰符的 类、方法、数据域 可被同一个包内的任何类访问

private 只能修饰 类成员。

9.9 数据域封装

数据域封装(data field cncapsulation):为了避免对数据与的直接修改,可使用 private 修饰符将数据域声明为私有。

为了能够访问私有数据域,可以提供一个 get 方法(访问器,accessor)返回数据域的值,一个 set 方法(修改器,mutator)给数据域设置新值。

9.10 向方法传递对象参数

给方法传递一个对象,是将对象的引用传递给方法。

9.11 对象数组

对象数组实际上是引用变量的数组。

9.12 不可变对象和类

可以定义不可变类来产生不可变对象。不可变对象的内容不能被改变。

不可变类 必须满足:

  • 所有数据域都是私有的
  • 没有修改器方法
  • 没有一个返回指向可变数据域的引用的访问器方法

9.13 变量的作用域

实例变量和静态变量的作用域是整个类,无论变量是在哪里声明的。

9.14 this 引用

关键字 this 引用对象自身。

  • 使用 this 引用隐藏数据域
  • 使用 this 调用构造方法

END

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...