Java核心技术卷一第四章思维导图+笔记
4.1 面向对象程序设计概述
- 封装从形式上看不过是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。
- 实现封装的关键在与绝对不能让类中的方法直接访问到其他类的属性。
- 在类之间最常见的三个关系有: 1. 依赖(“uses-a”),2.聚合(“has-a”), 3.继承(“is-a”)。
4.2 使用预定义类
- 一个对象变量并没有包含一个对象,只是引用一个对象。任何一个对象变量的值都是对/存储另一个地方的对象的引用。
- 时间是用距离一个特定时间的毫秒数表示的。
- Date类用来表示时间,LocalDate类用来表示日历。
- 不要使用构造器来创建LocalDate对象,应当使用静态工厂方法来代表你调用构造器。即
LocalDate.now(); / LocalDate.of(year,month,day);
- 修改对象状态的方法称为更改器方法,只访问而不修改对象的方法称为访问器方法。
4.3 用户自定义类
- 类通常包括属于某个类类型的属性。
- 构造方法总是伴随着new操作符的执行被调用,且不能对一个已经实例化的对象调用构造方法来达到重新设置属性的目的。
- 不要在构造方法中定义与全局变量同名的局部变量。
- 隐式参数即调用此方法的调用者,显示参数是方法声明后面罗列的参数。
- 不要编写返回引用可变对象的访问器方法
- 方法可以访问所调用对象的私有数据,一个方法可以访问所属类的所有对象的私有数据。
4.4 静态域和静态方法
- 一个类的所有实例化对象共享所有的静态属性。静态属性属于类不属于属性。
- 静态方法是没有隐形参数的方法即没有this参数。
- 在以下两种情况下使用静态方法:
1.一个方法不需要访问对象状态,其所需参数都是通过显示参数获取。
2.一个方法只需访问类的静态域。 - 工厂方法
4.5 方法参数
- 按值调用(call by value):表示方法接受的是调用者提供的值。
- 按引用调用(call by reference):表示方法接受的是调用者提供的变量地址。
- Java程序设计语言总是采用按值调用,即方法得到的是所有参数值的一个拷贝。并且方法不能修改传递给他的任何参数变量的内容。当方法参数是基本数据类型是时:
上图中,无论方法对的参数做了什么操作,操作的都是percent的拷贝值,不会对percent产生任何影响。
当方法参数是对象引用时:
上图中,方法得到的是对象引用的拷贝值,方法不会对此引用的拷贝值产生影响,但是可以改变被引用的对象的状态。
4.6 对象构造
- 重载:多个方法有相同的名字和返回值,但是参数类型不同,那么就产生了重载。
- 如果构造方法没有显式的初始化全局变量的值,那么全局变量就会被设为默认值:数值为0,布尔值为false,对象引用为null。
- 如果一个类中没有构造方法,那么系统会自动给此类生成一个无参的构造方法,这个构造方法会将全局变量设为默认值。
- 三种初始化数据域方法:
1.在构造方法中设置值
2.在声明中赋值
3.在初始化块中设置值 - 构造方法的执行步骤:
4.10 类设计技巧
- 一定要保证数据私有
- 一定要对数据初始化
- 不要再类中使用过多的基本类型(用 类来代替过多的基本类型)
- 不是所有的类都需要独立的域访问器和域更改器
- 将职责过多的类进行分解
- 类名和方法名要体现他们的职责
- 优先使用不可变得类