当一个方法是public时,意味着它可以被其他对象访问
例如:
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
}
优势..你可以在其他地方使用它。
当一个方法是private时,意味着它只能被OF THE SAME CLASS的对象访问
例如,在这个新定义中:
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();
}
}
优势?您可以创建一堆方法并将它们保密,避免数据损坏或一般保留您的对象encapsulated
关于封装
OOP(面向对象编程)的目的是根据现实生活中的对象对软件进行建模。
现实生活中的对象具有(除其他外)属性和访问这些属性的方法。
您希望公开其中一些方法,而将其他方法保密。
例如,一个人类存在,有一颗心。但它不是暴露给所有人的,这将是危险的。它被封装在我们体内。
如果我们要以真正的人类为软件建模,我们可以声明方法:heartBeat 为私有(因此,没有人可以访问它)
另一方面,使用像getGender 这样的public 方法来确定您的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
希望对你有帮助