《Java核心技术 卷I》读书笔记三

章节内容

  • 面向对象程序设计
  • 使用预定义类
  • 用户自定义类
  • 静态域和静态方法
  • 方法参数
  • 对象构造
  • 类路径
  • 文档注释
  • 类设计技巧

面向对象程序设计

面向对象程序设计(OOP)已经取代了结构化程序设计。java是完全面向对象的。
OOP中我们不关心对象的具体实现,只要能满足需求。

类class是构造对象的模板或蓝图,由类构造对象的过程被称为创建类的实例。
java中所有类都继承Object类

对象

对象即类的实例,拥有类的所有方法

类之间的关系

最常见的关系有:

  • 依赖 一个类的方法操纵另一个类的对象
  • 聚合 一个类的对象包含另一个类的对象
  • 继承 所有类都来源于Object类

使用预定义类

在java中一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。

用户自定义类

程序员习惯于将每个类存在一个单独的源文件中。
java编译一个类文件如果使用了其他类,就会查找该类的class文件,如果没有找到就会自动搜索java文件并编译,如果java文件较已有的class文件有更新,java编译器会自动重新编译这个文件。
java的构造器可以有多个,没有返回值,可以有任意个参数,与类同名,伴随着new一起被调用。
封装的好处:

  • 改变内部实现,对其他程序不可见
  • 可以在封装方法上加业务逻辑执行错误检查
    final修饰符表示构建对象时必须初始化这样的。
    静态域只属于类,不属于每个对象,所以每个类只有一个静态域static
    static和final经常一起使用,比如Math类中的PI:
public class Math {
      public static final double PI = 4.141592657....;
}

比如标准输出:

public class System {
      public static final PrintStream out=....;
}

System类中有个setOut方法,虽然out域是final的,但是setOut是一个本地方法,不是用java语言实现的,可以绕过java语言的存取控制机制。
静态方法:不能向对象实施操作的方法,使用静态方法的情况:

  • 一个方法不需要访问对象的状态,所需参数都是通过显式参数提供,Math.pow,main方法
  • 一个方法只需要访问类的静态域

方法参数

两种类型:

  • 基本数据类型
  • 对象引用
    java的对象采用的不是引用调用,实际上对象引用是按值传递的。创建一个交换两个对象引用的方法是不能生效的
    java中方法参数的使用情况:
  • 一个方法不能修改一个基本数据类型的参数
  • 一个方法可以改变一个对象参数的状态
  • 一个方法不能让对象参数引用一个新的对象

对象构造

重载:一个对象有多个方法有相同的名字,不同的参数
方法的签名:方法名、参数类型和个数
构造器中没有显式给域赋予初值的,就被自动赋予默认值,0,false,null等
如果没有编写任何构造器,则系统会提供一个无参数构造器,如果提供了至少一个构造器,则不会自动提供无参数构造器。
构造器调用另一个构造器可以用this关键字
初始化数据域的方法:

  • 构造器中设置值
  • 声明中赋值
  • 在初始化块中赋值
    首先运行初始化再运行构造器

调用构造器具体处理步骤:

  1. 所有数据域被初始化为默认值
  2. 按照在类声明中出现的次序,一次执行所有域初始化语句和初始化块
  3. 如果构造器第一行调用了其他构造器,则执行其他构造器
  4. 执行构造器的主体

因为java有自动垃圾回收,所以java不支持析构器
如果对象中使用了内存外的其他资源,可以在finalize方法中回收。finalize方法将在垃圾回收器清除对象之前调用。

java使用包package将类组织起来,使用包的主要原因是确保类名的唯一性
java通过包导入类,*表示导入一个包的所有类文件
静态导入可以导入静态方法和静态域的功能。

import static java.lang.System.*

out.println("hello world");
exit(0);

包中的类文件应该放在和完整包名匹配的子目录中。
java的域和方法的作用域默认为包作用域。

类路径

为了使类能够被多个程序共享,类文件可以存储在jar文件中。
为了使类可以被多个程序共享,需要做到以下几点:

  1. 把类放到一个目录中
  2. 将jar文件放在一个目录中
  3. 设置类路径。类路径是所有包含类文件的路径的集合
    可以用-classpath或-cp指定类路径,也可以通过设置CLASSPATH环境变量来完成。

文档注释

java注释可以到处javadoc文档

类设计技巧

  1. 一定要保证数据私有
  2. 一定要对数据初始化
  3. 不要在类中使用过多的基本类型
  4. 不是所有的域都需要独立的域访问器和修改器
  5. 将职责过多的类进行分解
  6. 类名和方法名要能体现职责
  7. 优先使用不可变类
原文地址:https://www.cnblogs.com/prelude1214/p/13688349.html