当一个方法 公开时 ,意味着它可以被其他对象访问
例如:
class David { // public method, can be use by anyone public String getName() { return "David"; } }该方法
getName可以被其他类访问,因为它是公共的:
class Other { David davidOne = new David(); String davidsName = davidOne.getName(); //<-- compiles and runs }优点..您可以从其他地方使用它。
如果方法是 私有的,* 则意味着该方法只能由 同一类的 对象访问 *
例如,在这个新定义中:
class David { public String getName() { return "David"; } // private method... nobody but David's "instances" can use it.. private int getAge() { return 19; } }该方法
getAge不能被其他类访问,因为它是私有的,如果尝试这样做,编译器会给您一条错误消息:
class Other { David davidOne = new David(); String davidsName = davidOne.getName(); int davidsAge = davidOne.getAge(); //<-- Compiler error, getAge() is not visible }但是,如果可以 在 David类中使用它:
class David { public String getName() { return "David"; } // private method... nobody but David's "instance" can use it.. private int getAge() { return 19; } // Here the call to "getAge()" will succeed, because it is visible // inside the class public boolean hasSameAgeAs( David otherDavid ) { return this.getAge() == otherDavid.getAge(); } }优势?您可以创建一堆方法并将其保持私有状态,从而避免数据损坏或总体上保留封装的对象
关于封装
在OOP(面向对象程序设计)中,其目的是根据现实生活中的对象对软件进行建模。
现实生活中的对象具有(除其他外)属性和访问这些属性的方法。
您想公开其中一些方法,而另一些保持私有。
例如, 人类 有一颗心。但是它并没有暴露给所有人,这很危险。它被 包裹 在我们体内。
如果我们要以真实的 人类 为模型来建模,我们可以将方法声明为:
heartBeat私有的(因此,没有人可以访问它)
另一方面,采用 公共 方法
getGender来查找您的 Human 实例是男性还是女性,这将是有用的。
还有其他访问修饰符,例如:“ protected”和受保护的软件包(其没有关键字)
class David { // protected method protected int getBalance() {return 1000000; } // package protected or "default" method boolean knowsOop(){return true; } }在那里,该方法
getBalance只能由
David实例和
David子类访问(为子类创建另一个线程)
knowsOop定义David时,包内的任何人都可以访问该方法。
不用担心这两个访问修饰符,当您了解有关OOP和Java的更多信息时,它们将很有意义。
最后,您应该花时间阅读以下内容:
http://java.sun.com/docs/books/tutorial/java/javaOO/index.html
我希望这有帮助



