第 4 章 对象与类
Posted clipboard
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第 4 章 对象与类相关的知识,希望对你有一定的参考价值。
4.1 面向对象程序设计概述
4.1.2 对象,93
对象的行为(behavior)—— 方法
对象的状态(state)—— 域
对象标识(identity)—— 实例
4.1.4 类之间的关系,94
依赖(“uses-a”)
组合(“has-a”)
继承(“is-a”)
4.2 使用预定义类
4.2.2 Java 类库中的 LocalDate 类,98
日历表示法
不可变的类
4.3 用户自定义类
4.3.1 Employee 类,103
实例域
构造器
实例方法
4.3.2 多个源文件使用,105
两种编译源程序的方法。
使用通配符调用 Java 编译器:
Java Employee*.java
键入以下命令:
javac EmployeeTest.java
Java 编译器内置了 make
功能。
4.3.4 构造器,106
初始化实例域
- 构造器与类同名
- 每个类可以有一个以上的构造器(重载)
- 构造器可以有 0 个、1 个或多个参数(隐式参数
this
) - 构造器没有返回值
- 构造器总是伴随着 new 操作一起调用
4.3.5 隐式参数与显式参数,108
关键字 this
表示隐式参数,一个对象的引用。
4.3.8 私有方法,111
4.3.9 final 实例域,112
构建对象时必须初始化 final
实例域。final
实例域的值设置之后,不能够再对它进行修改。
final
修饰符大都应用于基本(primitive)类型域,或不可变(immutable)类的的域(如果类中的每个方法都不会改变其对象,这种类就是不可变的类。)
对于可变的类,使用 final
修饰符可能会对读者造成混乱。
4.4 静态域与静态方法
4.4.1 静态域,112
属于类,而不属于独立的对象。
4.4.2 静态常量,113
Math.PI
System.out
4.4.3 静态方法,114
静态方法是一种不能向对象实施操作的方法。
可以认为静态方法是没有 this
参数的方法,没有隐式参数。
在下面两种情况下使用静态方法:
- 一个方法不需要访问对象状态,其所需参数都是通过显式参数提供。
- 一个方法只需要访问类的静态域。
Java static
关键字的含义:属于类且不属于类对象的变量和函数。
4.4.4 工厂方法,115
4.4.5 main 方法,115
每一个类可以有一个 main
方法。这是一个常用于对类进行单元测试的技巧。
4.5 方法参数,118
按值调用(call by value)
按引用调用(call by reference)
Java 语言采用按值调用。方法得到的是所有参数值的一个拷贝,方法不能修改传递给它的任何参数变量的内容。
4.6 对象构造
4.6.2 默认域初始化,123
隐式域初始化:0、false、null
4.6.3 无参数的构造器,124
4.6.4 显式域初始化,125
在声明中赋值
4.6.5 参数名,125
一种常用的技巧: 参数使用同名屏蔽实例域,实例域采用 this
形式访问。
this
指示隐式参数,也就是所构造的对象。
4.6.6 调用另一个构造器,126
this(...)
4.6.7 初始化块,127
三种初始化数据域的方法:
- 在声明中赋值
- 在初始化块中设置值
- 在构造器中设置值
为了避免循环定义,不要读取在后面初始化的域。 参考 Java 语言规范 8.3.2.3 节。
建议将初始化块放在域定义之后。
调用构造器的具体处理步骤:
- 所有数据域初始化为默认值(0、false、null)。
- 按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块。
- 如果构造器第一行调用了第二个构造器,则执行第二个构造器主体。
- 执行这个构造器主体。
两种初始化静态域的方法:
- 在声明中赋值
- 在静态初始化块中设置值
在类第一次加载的时候,将会进行静态域的初始化。
调用构造器的具体处理步骤(静态域、静态初始化块):
- 静态域初始化、静态初始化块(在类第一次加载的时候,依照类定义的顺序执行)
- 实例域初始化、对象初始化块(依照类定义的顺序执行)
- 构造器
4.7 包,131
从编译器的角度来看,嵌套的包之间没有任何关系。
例如,java.util
包 与 java.util.jar
包 毫无关系。
每一个都拥有一个独立的类集合。
4.10 类设计技巧,144
- 一定要保证数据私有(数据的表现形式很可能会改变,但它们的使用方式却不会经常发生变化。)
- 一定要对数据初始化(Java 不对局部变量进行初始化,但是会对对象的实例域进行隐式初始化。应该显式初始化)
- 不要在类中使用过多的基本类型(使类更加易于理解且易于修改)
- 不是所有的域都需要独立的域访问器和域修改器
- 将职责过多的类进行分解
- 类名和方法名要能够体现它们的职责(类名:名词、形容词+名词、动名词+名词)
- 优先使用不可变的类
以上是关于第 4 章 对象与类的主要内容,如果未能解决你的问题,请参考以下文章