对象与类

159 阅读2分钟

使用预定义类

  • 标准Java类库分为两个类:一个用来表示时间点的Date类;另一个用来表示大家熟悉的日历表示法的LocalDate类。将时间与日历分开是一种很好的面向对象设计。

封装

:注意不要返回引用可变对象的访问器方法。在Employee类中就违反了这个设计原则,其中的getHireDay方法返回了一个Date类对象:

class Employee{
    private Date hireDay;
    ...
    public Date getHireDay(){
        return hireDay;
    }
    ...
}

LocalDate类没有更改器方法,与之不同,Date类有一个更改器方法setTime,可以在这里设置毫秒数。 如果需要返回一个可变对象的引用,应该首先对它进行克隆(clone)。对象clone是指存放在另一个位置上的对象副本。

下面两种情况下使用静态方法:

  • 一个方法不需要访问对象状态,其所需参数都是通过显式参数提供(例如:Math.pow)
  • 一个方法只需要访问类的静态域(例如:Employee.getNextId)

方法参数

Java程序设计语言对对象采用的不是引用调用,实际上,对象引用是按值传递的

  • 一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)
  • 一个方法可以改变一个对象参数的状态
  • 一个方法不能让对象参数引用一个新的对象

从编译器的角度来看,嵌套的包之间没有任何关系。例如,java.util包与java.util.jar包没有任何关系。每一个都拥有独立的类集合。

继承

Java中使用关键字extends代替C++中的冒号(:)。在Java中,所有的继承都是公有继承,而没有C++中的私有继承和保护继承。