ad

阅读《Java核心技术》卷1 基础知识_更了解Java的奥妙_4.3.10 私有方法

admin 72 2023-10-25

【摘要】 本书摘自《Java核心技术》一书中第4章,第3节,作者是来自美国的凯·S.霍斯特曼(Cay S.Horstmann),由林琪、苏钰涵等译。

4.3.10 私有方法

在实现一个类时,由于公共数据非常危险,所以应该将所有的数据字段都设置为私有 的。然而,方法又应该如何设计呢?尽管绝大多数方法都被设计为公共的,但在某些特殊情 况下,将方法设计为私有可能很有用。有时,你可能希望将一个计算代码分解成若干个独立 的辅助方法。通常,这些辅助方法不应该成为公共接口的一部分,这是由于它们往往与当前 实现关系非常紧密,或者需要一个特殊协议或者调用次序。最好将这样的方法设计为私有 方法。

在Java中,要实现私有方法,只需将关键字 public 改为private 即可。

通过将方法设计为私有,如果你改变了方法的实现方式,将没有义务保证这个方法依然 可用。如果数据的表示发生了变化,这个方法可能会变得难以实现,或者不再需要;这并不 重要。重点在于,只要方法是私有的,类的设计者就可以确信它不会在别处使用,所以可以 将其删去。如果一个方法是公共的,就不能简单地将其删除,因为可能会有其他代码依赖这 个方法。

4.3.11 final实例字段

可以将实例字段定义为 final。这样的字段必须在构造对象时初始化。也就是说,必须 确保在每一个构造器执行之后,这个字段的值已经设置,并且以后不能再修改这个字段。例 如,可以将 Employee类中的name字段声明为final, 因为在对象构造之后,这个值不会再改 变,即没有 setName 方法。

阅读《Java核心技术》卷1 基础知识_更了解Java的奥妙_4.3.10 私有方法

class Employee

{

private final String name;

final修饰符对于类型为基本类型或者不可变类的字段尤其有用。(如果类中的所有方法 都不会改变其对象,这样的类就是不可变的类。例如, String类就是不可变的。)

对于可变的类,使用final修饰符可能会造成混乱。例如,考虑以下字段: private final StringBuilder evaluations;

它在 Employee 构造器中初始化为evaluations = new StringBuilder();

final关键字只是表示存储在evaluations变量中的对象引用不会再指示另一个不同的 StringBuilder 对象。不过这个对象可以更改:

public void givegoldStar()

evaluations.append(LocalDate.now()+":Gold star!\n");

4.4 静态字段与静态方法

在前面给出的示例程序中, main方法都被标记了static修饰符。下面来讨论这个修饰符 的含义。

4.4.1 静态字段

如果将一个字段定义为 static, 每个类只有一个这样的字段。而对于非静态的实例字段, 每个对象都有自己的一个副本。例如,假设需要给每一个员工赋予唯一的标识码。这里给 Employee类添加一个实例字段id和一个静态字段 nextId:

class Employee

{

private static int nextId =1;

private int id

现在,每一个Employee对象都有一个自己的id字段,但这个类的所有实例将共享一个 nextId字段。换句话说,如果有1000个Employee类对象,则有1000个实例字段id, 分别对 应每一个对象。但是,只有一个静态字段 nextId。 即使没有 Employee 对象,静态字段 nextId也 存在。它属于类,而不属于任何单个的对象。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 [email protected] 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:阅读《Java核心技术》卷1 基础知识_更了解Java的奥妙_4.5 方法参数
下一篇:阅读《Java核心技术》卷1 基础知识_更了解Java的奥妙_4.1 面向对象程序设计概述
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×