【问题标题】:Calling methods on objects Java在 Java 对象上调用方法
【发布时间】:2018-01-11 12:02:06
【问题描述】:

我正在大学学习 Java 编程课程,下周要参加考试。我正在浏览过去的试卷,有点卡在这个问题上:

Consider the following class X: class X { private boolean a; private int b; ... } 

(i)     Write a constructor for this class. [2 marks] 


(ii)   Show how to create an object of this class. [2 marks] 


(iii)  Add a method out, which returns b if a is true, and -b otherwise. This method must be usable for any client of 
    this class. [2 marks] 

我在下面包含了我的代码,但我坚持的是这个问题的最后一部分。如何在新对象上调用方法(因为我们在课堂上没有教过)?或者,这个问题是否暗示该方法必须可用于任何对象,而不仅仅是创建的对象?

对不起,我糟糕的代码和愚蠢的问题,我真的在 Java 上苦苦挣扎。

public class X {
 private boolean  a;
 private int b;

 X(final boolean i, final int j) {
  a = i;
  b = j;

 }

 static int Out(boolean a, int b) {
 if (a == true) {
  return b;
 }
  return -b;
 }

 public static void main(String[] args) {;

 X object1 = new X(true, 5);

 System.out.println(Out(object1));


 }
}

【问题讨论】:

  • 注意 Java 命名约定。方法名称必须以小写字符开头
  • out 不应该是静态的,也不应该带任何参数。比你可以称之为object1.out()
  • Java Nuts and Bolts - Using Objects: Calling an Object's Methods - 您可能需要完成整个课程教程。另外,我认为您还没有正确完成前两个问题。您可能打算创建该类的非静态方法,该方法使用构造函数中设置的值,而不是仅使用传递参数的静态方法。
  • @ArifMustafa 是的,但过去 4 周我一直在准备,通过我的讲师演示。现在,我正在浏览过去的试卷(y)
  • 如果您正在处理对象,请不要使用静态方法。使用object1.Out()获取想要的值并将方法重写为public int getB();

标签: java object methods


【解决方案1】:

您已经非常接近解决方案了。简单地做一个这样的方法:

public int out() {
    if (a) {
        return b;
    } else {
        return -b;
    }
}

然后你可以像这样在你的 main 方法中调用它:

X object1 = new X(true, 5);
System.out.println(object1.out());

注意:去掉public static void main(String[] args) {;末尾的分号

【讨论】:

    【解决方案2】:

    我认为您打算创建一个名为 out 的非静态方法,该类的客户端可以使用点表示法(在您创建 X 类型的新对象的任何地方)调用/p>

    public int out() {
       if(a)
          return b;
       else
          return -b;
    }
    
    public static void main(String[] args) {
       X object1 = new X(true, 5);
       int result = object1.out();
       System.out.println(result);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      相关资源
      最近更新 更多