Java-第九章 对象和类-学习总结

第九章 对象和类

9.1为对象定义类

可以把两个类放在同一个文件中,但是文件中只能有一个类是公共 ( public ) 类 。 此外 ,公共类必须与文件同名。

9.2 使用构造方法构造对象

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

9.3 通过引用变量访问对象

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

9.4 访问对象的数据和方法

警告 : 回想一下 ,我们曾经使用过 Math . methodName ( 参数 ) ( 例如 : Math . pow ( 3 , 2,5 ) 来调用 Math 类中的方法 。 那么能否用 Circle . getArea() 来调用 getArea 方法呢 ? 答案是不能 。 Math 类中的所有方法都是用关键字 static 定义的静态方法 。 但是 , getArea () 是实例方法 ,因此它是非静态的 。 它必须使用 objectRefVar . methodName( 参教) 的方式 ( 例如 :myCircle . getAreaO ) 从对象调用 。

9.5 引用数据域和 null 值

引用类型数据域的默认值是 null, 数值类型数据域的默认值是 0 , boolean 类型数据域的默认值是 false , 而 char 类型数据域的默认值是 ’ \ u0000‘ 。 但是 , Java 没有给方法中的局部变置陚默认值 。

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

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

9.7 使用 Java 库中的类

9.7.1 Date 类

getTime()方法返回自从 GMT 时间 1970 年 1 月 1 日算起至今流逝的时间
toString() 方法返回日期和时间的字符串
9.7.2 Random类
9.7.2.1使用 Math . random()获取一个 0.0 到 1.0 ( 不包括 1.0 ) 之间的随机 double 型值
9.7.2.2 java . util . Random 类
在这里插入图片描述

9.7.3 Point 2D 类

在这里插入图片描述

9.8 静态变量,常量和方法

如果想让一个类的所有实例共享数据,就要使用静态变量 (static variable ) , 也称为类变量 ( class variable ) 。 静态变量将变量值存储在一个公共的内存地址 。 因为它是公共的地址 ,所以如果某一个对象修改了静态变量的值 , 那么同一个类的所有对象都会受到影响 。 Java 支持静态方法和静态变量,无须创建类的实例就可以调用静态方法 ( static method ) 。
类中的常量是被该类的所有对象所共享的 。 因此,常量应该声明为 final static。
实例方法( 例如 : getAreaO ) 和实例数据 ( 例如 : radius ) 都是属于实例的 , 所以它们在实例创建之后才能使用 。 它们是通过引用变量来访问的 。 静态方法 ( 例如 :getNumberOfObjectsO ) 和静态数据 ( 例如 : numberOfObjects ) 可以通过引用变量或它们的类名来调用。

9.9 可见性修饰符

9.10 数据域封装

将數据域设为私有保护數据,并且使类易于维护。

9.11 向方法传递对象参数

可以将对象传递给方法 。 同传递数组一样 ,传递对象实际上是传递对象的引用 。

9.12 对象数组

数组既可以存储基本类型值 , 也可以存储对象 。
对象的数组实际上是引用变量的数组 。

9.13 不可变对象和类

要使一个类成为不可变的,它必须满足下面的要求 :
• 所有数据域都是私有的 。
• 没有修改器方法 。
• 没有一个返回指向可变数据域的引用的访问器方法
如果一个类是不可变的,那么它的所有数据域必须都是私有的 , 而且没有对任何一个数据域提供公共的 set 方法 。 一个类的所有数据都是私有的且没有修改器并不意味着它一定是不可变类 。

9.14 变量的作用域

实例变量和静态变量的作用域是整个类 ,无论变量是在哪里声明的。但是当一个数据域是基于对另一个数据域的引用来进行初始化时则不是这样 。 在这种情况下,必须首先声明另一个数据域。
在这里插入图片描述
类变量只能声明一次,但是在一个方法内不同的非嵌套块中,可以多次声明相同的变量名 。

9.15 this 引用

关键字 this 是指向调用对象本身的引用名 。 可以用 this 关键字引用对象的实例成员 。
this 关键字可以用于引用类的隐藏數据域 。
关键字 this 可以用于调用同一个类的另一个构造方法 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值