算法(4th ed)(76):基础——数据抽象 4.1.9

阅读数:7 2019 年 11 月 2 日 11:55

算法(4th ed)(76):基础——数据抽象 4.1.9

(使用抽象数据类型:将对象作为参数)

可以将对象作为参数传递给方法,这一般都能简化用例代码。例如,当我们使用 Counter 对象作为参数时,本质上我们传递的是一个名称和一个计数器,但我们只需要指定一个变量。当我们调用一个需要参数的方法时,该动作在 Java 中的效果相当于每个参数值都出现在了一个赋值语句的右侧,而参数名则在该赋值语句的左侧。也就是说,Java 将参数值的一个副本从调用端传递给了方法,这种方式称为按值传递(请见 1.1.6.3 节)。这种方式的一个重要后果是方法无法改变调用端变量的值。对于原始数据类型来说,这种策略正是我们所期望的(两个变量互相独立),但每当使用引用类型作为参数时我们创建的都是别名,所以就必须小心。换句话说,这种约定将会传递引用的值(复制引用),也就是传递对象的引用。例如,如果我们传递了一个指向 Counter 类型的对象的引用,那么方法虽然无法改变原始的引用(比如将它指向另一个 Counter 对象),但它能够改变该对象的值,比如通过该引用调用 increment() 方法。

评论

发布