【问题标题】:How to use a Get method in java如何在java中使用Get方法
【发布时间】:2016-03-02 20:51:01
【问题描述】:

关于如何在 java 中创建 getter 和 setter 方法的问题有很多。但我还没有看到一个真正告诉我如何使用它的。

假设我在 A 类中有 Private int i = 1;,我想在 B 类中访问它。 我将首先在 A 类中创建一个名为 getIntI(); 的 get 方法,该方法将返回 i 的值。

然后在 B 类中,如果我想创建一个需要 i 值的 if 语句,我将如何获得 int i 的值。以下是我尝试调用不起作用的 get 方法。

if(getIntI == 1)
{System.out.print.ln("int i is one");}

这可能是一个非常愚蠢的问题,但我无法在其他地方找到答案。

【问题讨论】:

  • 尝试使用if(getIntI() == 1)。在 Java 的方法调用中需要有括号。
  • 您的问题并非特定于 get 方法。相反,您的问题是如何调用 java 中的任何方法。对于此示例,请在方法名称的末尾加上括号,例如 getIntI()

标签: java


【解决方案1】:

如果 class B extends class A 则只做这个更改,

if(getIntI() == 1)

如果高于inheritance was not there,则执行此操作,

if(new A().getIntI() == 1)

【讨论】:

    【解决方案2】:

    A类:

    public int getIntI(){
        return i;
    }
    

    注意: 现在,由于您的变量是单个字符命名的(只是 I),getter 方法命名为 getIntI,因为名称 getI 不太有意义。但一般来说,getter 方法类似于 get+VariableName 并且不涉及提及类型。例如,如果我有一个名为int count 的变量,我的方法将被命名为getCount 而不是getIntCount。这是一般惯例。

    此外,不鼓励使用单字符格式(如xy 等)命名变量,因为这可能会在复杂程序中造成混乱和管理困难。尽管在非常小的程序中它们都很好。


    回到主题,如果你想访问 B 类中的方法 getIntI(),你要么必须继承 A 类,要么创建 A 类的对象来引用它的方法。

    对于 B 类:

    • 创建对象

      A obj = new A();
      
      if(obj.getIntI() == 1)
          // Do stuff
      
    • 继承A类:

      public class B extends A{
      
      ... // Your stuff
      
          if(getIntI() == 1)
              // Do stuff
      
      ... // Your stuff
      }
      

    当然还有其他方法,但这些方法更简单。

    【讨论】:

    • 为什么有时当我使用 get 方法时它只在我使用 private static int i 时才有效。当我尝试更改它使其不是静态的时,我在调用 get 方法时得到一个空值。
    • 你能在哪里显示代码吗?此链接也可能有帮助:stackoverflow.com/questions/17242649/…
    • 这反映了你的设计有问题;你的变量不应该是静态的,正确的修复是别的。
    • link 这是我关于我的问题的问题。非常感谢任何帮助!
    【解决方案3】:

    问题是你需要创建一个从类 A 派生的对象,然后才能使用它访问它的变量/方法

    A a = new A();
    

    其中“a”是对象的名称。然后您可以通过调用a.getIntI 来访问getter 方法。

    您还可以将 int 变量声明为静态变量,这样您就不必实例化任何对象。具有静态变量和 getter 方法的 A 类示例如下:

    public class A {
    
        private static int i = 1;
    
        public static int getIntI() {   
            return i;
        }
    
    }
    

    有了这个,你可以用A.getIntI()调用getter方法。

    【讨论】:

      【解决方案4】:

      首先,如果您想访问A 的一个非静态方法(在本例中为getIntI),您需要一个A 的实例,或者您可以将其声明为静态。

      其次,方法调用需要一个参数列表,即使是空的也需要。 getIntI 不需要任何参数,所以需要在末尾加上()

      现在,您可以在某处获取A 的实例并将其命名为aObj。然后你可以在 if 语句中使用它:

      if (aObj.getIntI == 1)
      

      记得加()

      if (aObj.getIntI() == 1)
      

      或者,您可以将A 中的i 声明为静态。静态变量和非静态变量之间有两个主要区别。

      • 您不需要声明类的实例来访问静态变量。

      • 与非静态变量不同,静态变量只有一个。如果你有一个非静态变量i,你可以创建很多A的实例,每个实例都有自己的i

      现在让我们看看它的实际效果,将i 声明为静态:

      public class A {
          private static int i = 1;
          public static int getIntI () { return i; }
      }
      

      注意igetIntI 是如何声明为静态的。

      然后你可以像这样在 if 语句中使用:

      if (A.getIntI() == 1)
      

      注意我如何使用类名 A 来访问方法,而不是 A 的实例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-16
        • 2011-05-08
        • 1970-01-01
        • 2017-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-12
        相关资源
        最近更新 更多