第四章 对象和类

面向对象程序设计概述OOP

  • 类是构造对象的模版或蓝图。由类构造对象的过程称为创建类的实例Instance
  • 对象中的数据称为实例域,操纵数据的过程称为方法method
  • 对于每个特定的类实例对象都有一组特定的实力域值。这些值的集合就是这个对象的当前状态state
  • 对象的三个主要特性:对象的行为behavior——可以对对象施加哪些操作(方法);对象的状态——当施加方法时,对象如何响应;对象标识identity——如何辨别具有相同行为与状态的不同对象
  • 类之间最常见的关系有:依赖(uses-a)聚合(has-a)继承(is-a)

使用预定义类

  • 使用构造器Constructor构造新实例,构造并初始化,new 构造器()
  • 任何对象变量的值都是对存储在另外一个地方的一个对象的引用
  • LocalDate类
  • 更改器方法与访问器方法

用户自定义类

  • 建议将实例域标记为private
  • 构造器总是伴随着new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。
  • 构造器的5个特点:构造器与类同名,每个类可以有一个以上的构造器,构造器可以有0个1个或多个参数,构造器没有返回值,构造器总是伴随着new操作一起调用
  • 不要在构造器中定义与实例域重名的局部变量
  • 隐式参数与显式参数 :在一个方法中,关键字this表示隐式参数。
  • 获得或设置实例域的值,应该提供:一个私有的数据域,一个公有的域访问器方法,一个公有的域更改器方法
  • 可以将实例域定义为final ,构建对象时必须初始化这样的域
  • 静态域属于类,而不属于任何独立的对象
  • 静态方法是一种不能向对象实施操作的方法,可以认为静态方法是没有this参数的方法
  • 使用静态方法的情况:一个方法不需要访问对象状态,其所需参数都是通过显式参数提供;一个方法只需啊访问类的静态域
  • static 的含义:属于类且不属于类对象的变量和函数
  • 还可以用静态工厂方法factory method来构造对象

方法参数

  • 按值调用call by value表示方法接收的是调用者提供的值
  • 按引用调用 call by reference表示方法接收的是调用者提供的变量地址
  • 一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值
  • 一个方法不可以修改一个基本数据类型的参数,一个方法可以改变一个对象参数的状态,一个方法不能让对象参数引用一个新的对象

对象构造

  • 多个方法有相同的名字,不同的参数,便成了重载Overload
  • 方法名以及参数类型,叫做方法的签名(signature)
  • 如果在构造器中没有显式地给域赋初值,会被自动赋默认值。
  • 初始化值不一定是常量值,还可以调用方法对域进行初始化
  • 参数命名技巧
  • 如果构造器的第一个语句形如this(...),这个构造器将调用同一个类的另一个构造器
  • 调用构造器的具体处理步骤:1.所有数据域被初始化为默认值2.按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块3.如果构造器第一行调用了第二个构造器,则执行第二个构造器主体4.执行这个构造器的主体。
  • 对象析构与finalize方法

包package

  • 一个类可以使用所属包中的所有类,以及其他包中的公有类public class
  • import语句是一种引用包含在包中的类的简明描述
  • import不仅可以导入类,还增加了导入静态方法和静态域的功能

类设计技巧

  • 一定要保证数据私有
  • 一定要对数据初始化
  • 不要在类中使用过多的基本类型
  • 不是所有的域都需要独立的域访问器和域更改器
  • 将职责过多的类进行分解
  • 类名和方法名要体现它们的职责
  • 优先使用不可变的类

你可能感兴趣的:(第四章 对象和类)