当前位置: 首页 > 面试题库 >

在Java中,方法成为public / private / other是什么意思?

谈灵均
2023-03-14
问题内容

在Java中,方法成为public / private / other是什么意思?
这些选择的优点和缺点是什么?
作为努力成为一名优秀程序员的人,我的动力是什么?


问题答案:

当一个方法 公开时 ,意味着它可以被其他对象访问

例如:

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

我希望这有帮助



 类似资料:
  • 在Java中,是否有明确的规则来规定何时使用每个访问修饰符,即默认的(包私有),,和,同时使和处理继承?

  • 问题内容: 在Python中,我有以下示例类: 如您所见,我有一个简单的“私有”属性“ _attr”和一个用于访问它的属性。有很多代码可以声明一个简单的私有属性,我认为这样声明所有属性并不符合“ KISS”哲学。 因此,如果我不需要特定的getter / setter / deleter,为什么不将我的所有属性都声明为公共属性呢? 我的回答是:因为封装原理(OOP)另有说明! 什么是最好的方法 ?

  • 问题内容: 我已经看到了声明,接口和类 这是什么意思? 问题答案: 没有证据,我相信您在谈论Java的泛型支持… 泛型允许您抽象类型 在Java 5之前,很难提供能够支持多种不同类型的Objects的类而不必为每种特定情况编写代码,因此人们通常会这样做。 这导致在运行时做出许多困难的选择,您必须进行运行时检查以查看是否有可能将给定的Object强制转换为可用类型…例如 现在,这已经很明显了,但是如

  • 我发现这段代码是为了在SO post中找到重复的代码。但我不明白这行是什么意思

  • 问题内容: 我正在学习上面的代码,它告诉我什么是自省者和什么是stopClass。但是我不明白这是什么意思?`for (PropertyDescriptor prop props) for(i=0;i<100;i++)` 有人可以帮忙进一步解释吗?谢谢! 问题答案: 这就是 Java 5中引入的每种循环语法。

  • 问题内容: 我的问题如上所述。抱歉,可能是重复的,但最后找不到一个示例。 为什么不只使用它作为参数? 问题答案: 是可参数化的类,因此可以使用where 类型的语法。通过编写,您可以声明一个可以是任何类型的对象(是通配符)。该类型是包含类元信息的类型。 通过指定特定类型来引用泛型类型始终是一种好习惯,这是通过尊重您的习惯(您知道可参数化的)来使用的,但并不限制参数具有特定类型。 有关泛型和通配符的