关于 java 中的 set,get方法,而为什么不推荐直接使用public

我不知道有没有人遇到过,有一段时间,我都觉得那些 set,get的用处何在,我直接写一个public直接拿不就行了,多爽,但是随着使用的频繁,越来越想去搜索一下这个问题,而不是按照官方的推荐,前辈们的使用都是建议set,get.

首先,对于网上那些说到的效率问题,真的感觉很丧,一种是通过一个方法去操作,一种是直接操作,把set,get方法打开来看,不也只是将更改数值的逻辑封装,仅此而已。 

所以如果要论为什么使用set,get,而不建议使用public,只能从编码的角度去讨论:

关于这个问题,网上有很多人提到了 封装性,提到封装,就不得不提java的修饰符。为了更加严谨的解释 java的三大修饰符,我还 又特地的翻了一下 <java编程思想>。

这里引入其中的一句话:

在任何相互关系中,具有关系所涉及的各方都遵守的边界是十分重要的事情,当创建一个类库时,就建立了与客户端程序员之间的关系,他们同样也是程序员,但是他们是使用你的类库来构建应用,或者构建更大的类库的程序员。如果所有的类成员对任何人都是可用的,那么客户端程序员就可以对类做任何事情,而不受约束。即使你希望客户端程序员不要直接操作你的类中的某些成员,但是如果没有任何访问控制,将无法阻止此事发生。所有的东西都将赤裸裸的暴露在世人面前。

举一个简单的例子,我这边有处理苹果的逻辑,但是至于怎么操作,这是我这边的工作。但是为了让你也可以操作,我提供了 吃苹果,和摘苹果的两个方法,即get,set。

网上也有说,如果让你接手一个项目,里面都是用了 public,那么对于这个数值的操作,岂不是得又翻一下项目了。

综上所述,写到这里,我诞生了一个想法,其实set ,get ,public,对于它们使用完全取决于我们程序员自己,为了让项目之间的逻辑更加清晰,有些标准自上而下,慢慢的传了下来,无论你使用那种,但是有一个东西是无法避免的,也就是这个语言的特性,或者说是封装性,或者说是边界性。

一些杂谈:这些只是来自我一个菜鸡自己的想法,当然对于很多大神来说不值一提,可能以后我会有更深入的理解,但是至少,在程序员这条路上,不想盲目的去使用一些东西,或者说不想单纯只是去听别人的一些看法。

猜你喜欢

转载自blog.csdn.net/petterp/article/details/84716761