Java类和方法的问题

正如有人从头开始,谁知道一点点的Python学习Java,我一直在想什么与所有的访问修饰符(公共的,静态的,受保护的......)在Java中。 我知道他们的意思,但为什么使用它们?

这只是东西是被窃听我,因为每当我写一个新的类,我写的实例变​​量,我经常要问自己,我想这个变量是私有的,公共的,最终的等? 我通常会得出这样的结论我不关心,为广大可变因素和方法。 有少数情况下,我知道我需要从另一个类调用该方法,但为什么不只是使所有的方法公开? 是不是因为你不能信任其他开发人员是不会开始四处翻找和搞乱你的代码的大型项目?

--------------解决方案-------------

使用最小能见度修饰符在每种情况下。 例如字段应该是私有的在几乎所有情况。

方法可以是:

  • 私人 - 如果他们只用在当前类,作为助手。
  • 受保护的,如果你希望他们能够访问到子类,但不能以其他类。 这是当你设计类的继承,并且要提供挂钩子类。
  • 包私人 - 如果您想使用相同的包里面这些方法,但不想让他们接触外面的世界

这些都涉及到API的设计 - 你希望你的API来揭露,哪些不是功能。 那就是 - 哪些方法是内部的实施,这应该是由使用类做他们的工作类使用。

所有这一切的好处是,你可以改变私人/包私有方法没有任何人,但你自己的类/包依赖于他们。 使他们的公共关系,你要支持他们。 这是真的不是只有当你在设计类的集合框架的API。 这也是真实的,当你设计自己的API,你自己的项目中。 类必须要知道的要少得多方法(因此更容易改变和支持)。

看到这个演讲由约书亚布洛赫在API的设计(尤其是从29:00)

访问修饰符所以程序员可以在一个面向对象的方式编程和使用数据封装到写气密(或尽可能接近)的API。

同意,它并不总是可取的。 这就是为什么有其他的选择。

这是一个面向对象的概念。 首先,例如,“最后”是一个修改,这将使该变量一个“常量”,然后如果你需要一个constat你必须使用它。 当您启动编码现实生活中的项目,您会看到具有这种封装的优势。 不要低估了它。

一个例子是,当你的编码方法,可以,例如,改变未来。

public void save(Person p){
this.saveInTheDataBase(p);
}
private void saveInTheDataBase(Person p){
database.save(p);
}
private void saveInFile(Person p){
file.save(p);
}

然后,您的客户将调用保存(); 没有照顾它被保存

这是,例如,有用的,当你有,你希望能够在不改变太多的代码来更新库。 公共方法通常停留,而私立学校可以改变。 如果库的作者将让一切公开,图书馆用户可以accidentially使用这种实现特定的方法,使得更新库更难。

这是所有关于多少你的API的暴露,因此多少会当你改变它打破。

  • private代码可以修改任何你喜欢的时候,你知道你将只影响到一个文件中自己的代码。
  • 默认(包私人)你仍然只影响自己的代码(有可能的例外是某些包挂羊头卖狗肉的),但你必须要检查更多。
  • protected :其他人的代码可能会使用它,但因为它是有限的子类,他们通常可以相当容易地更新他们的代码。
  • public代码可能是由其他人的代码广泛地使用。 改变这可能会迫使其他人修改自己的代码都在他们自己的项目。 如果你知道其他人使用你的代码,直到你已经发布的几个版本,其中被标记为你可能不应该改变这些方法@deprecated让这些人有一个变化来更新他们的代码事先就破。
分类:java的 时间:2012-01-23 人气:0
本文关键词: Java中,访问修饰符
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.237 (s). 9 q(s)