对象与类
Tags: Java核心技术卷I
面向对象程序设计概述
面向对象程序设计简单OOP。
- 类
类是构造对象的模板或蓝图。 - 对象
对象的三个主要特征
- 对象的行为
- 对象的状态
- 对象标识
同一个类的所有对象实例,由于支付相同的行为而具有家族式的相信性。对象的行为是用可调用的方法定义的。
每个对象都保存着描述当前特征的信息,这就是对象的状态。对象状态的改变必须通过调用方法实现(如果不经过方法调用就可以改变对象状态,只能说明封装性遭到了破坏)。
对象的状态并不能完全描述一个对象,每个对象都有唯一的身份。
- 识别类
找名词与动词。名词可能成为类名,动词成为方法。 - 类之间的关系
在类之间最常见的关系有
- 依赖(users-a)
- 聚合(has-a)
- 继承(is-a)
使用预定义类
- 对象与对象变量
在Java中使用构造器(constructor)构造新实例。构造器是一种特殊的局部变量不会自动地初始化为null,而必须通过调用new或将它们设置为null进行初始化。 - Java类库中的LocalDate类
LocalDate.now() 是通过静态方法而不是通过构造器来构造对象。 - 更改器与访问器方法
getter 和 setter
用户自定义类
- Employee类
class Employee {
private String name;
private double salary;
private LocalDate hireDay;
//constructor
public Employee(String n, double s, int year, int month, int day){
name = n;
salary = s;
hireDay = LocalDate.now(year, month, day);
}
//getter
//... more methods
}
- 多个源文件的使用
Java中会自动编译依赖的源文件 - 剖析Employee类
- 从构造器开始
构造器总是伴随着new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。 - 显示参数与隐匿参数
在每一个方法中,关键字this表示隐式参数
6.封装的优点 - 基于类的访问权限
- 私有方法
将public关键字修改为private关键字即可将公有方法变为私有方法 - final域
final修改的只能被设置一次
静态域与静态方法
- 静态域
使用static关键字所修饰的域(成员变量) - 静态常量
- 静态方法
静态方法不能访问实例域,因为它不能操作对象。但是静态方法可以访问自身类中的静态域 - 工大方法
- main方法
main方法是Java程序执行的入口 - 方法参数
Java总是采用按值调用。
- 一个方法不能修改一个基本数据类型的参数(即数值或布尔值)
- 一个方法可以改变一个对象参数的状态
- 一个方法不能让对象参数引用一个新的对象
对象构造
- 重载
如果多个方法有相同的名字、不同的参数,便产生了重载。
方法名以及参数类型叫做方法的签名。 返回类型不是签名的一部分,所以如果仅仅只是返回类型不同,并不能产生重载,编译器会报错。 - 默认域初始化
如果构造器中没有显式的给型号赋予初值,那么 就会被自动地赋为默认值:数值为0、布尔值为false、对象引用 为null。 - 无参构造器
如果在编写一个类时没有编写构造器,那么系统会提供一个无参数构造器。这个构造器将所有的实例域设置为默认值。
如果类中提供了至少一个构造器,那么此时系统就不提供默认无参数构造器。 - 显示域地初始化
可以在构造器中对域进行初始化 - 参数名
构造器参数名可以与实例域相同,但是这时在构造器中调用域必须使用this关键字 - 调用另一个构造器
this(...) 系统将将根据参数进行匹配 - 初始化块
在一个类的声明中,可以包含多个代码块。只要构造类的对象,这些块就会被执行。
{}
调用构造器的具体步骤
1)所有数据域被初始化为默认值(0、false、或 null)。
2)按照在类声明中出现的次序,依次执行扬有初始化语句和初始化块。
3)如果构造器第一行调用了第二个构造器,则执行第二个构造器主体。
4)执行这个构造器的主体。 - 对象析构与finalize方法
Java不支持析构
包
Java允许使用包(package)将类组织起来
- 类的导入
import - 静态导入
import static package;
导入之后就可以使用类的静态方法和静态域而不必加类名前缀 - 将类放入包中
- 包作用域
类路径
- 设置类路径
文档注释
JDK包含一个工具,javadoc
- 注释的插入
javadoc 从下面几个特性中抽取信息
- 包
- 公有类与接口
- 公有的和受保护的构造器及方法
- 公有的和受保护的域
注释以/** 开始 */结束
- 类注释
类注释必须放在import语句之后,类定义之前。
3.方法注释
4.域注释
5.通用注释
@author 姓名
@version 版本
@since 文本
@deprecated 文本可以给出不再使用的注释和取代的建议
@see 增加一个超级链接 - 包与概念注释
- 注释的抽取
javadoc -d
类设计技巧
- 一定要保证数据私有
- 一定要对数据初始化
- 不要在类中使用过多的基本类型
- 不是所有的域都需要独立的域访问器和更改器
- 将职责过多的类进行分解
- 类名和方法要能够体现它们的职责
- 优先使用不可变类
网友评论