【问题标题】:Can constructors perform operations like a method?构造函数可以像方法一样执行操作吗?
【发布时间】:2016-06-02 15:48:14
【问题描述】:

我正在做作业,我真的被这个问题困住了。我们被告知创建一个构造函数,该构造函数接受一个字符串参数,将其转换为小写,并将其拆分为单独的单词。然后索引文档(就像在搜索引擎中一样)。这个赋值旨在让我们知道一点关于搜索引擎的工作原理。

我一直使用方法来执行此类操作,但现在问题是要求在 constructor 中执行此操作。我尝试了几次,但它不工作。该作业还要求将不同的单词(在我将它们拆分到constructor 之后)存储在一个名为“Terms”的数组中,该数组还存储单词的频率。问题的另一部分是要求创建一个方法indexContent 来填充proper 大小的术语数组。

我希望三个信息以某种方式相关,但我不知道。我需要帮助,尤其是在创建我提到的 constructor 时。我什至不知道constructors 可以执行method 之类的操作。我认为constructors 是为了实例化对象而创建的,methods 是用来调用和执行操作的。请有人解释。

【问题讨论】:

  • 一句话Yes。但没有返回类型。
  • 我还需要使用那些拆分和小写的单词来执行一些其他操作,例如计算唯一单词、频率、在表格中打印;我如何调用方法来处理构造函数内部发生的事情。对我来说真的没有任何意义。

标签: java arrays methods constructor


【解决方案1】:

是的。 Constructor 可以做所有事情作为方法。实际上,构造函数是一个隐式返回其类类型的方法。

例如:

// constructor in fact is return its class type
People a = new People("StackoverFlow");

constructor 有一些限制,例如在某些情况下必须调用 parent 的构造函数,但不能调用方法。

例如:

class Parent {
   public Parent(String parentName) {}
}

class Child extends Parent {
   public Child(String name) {
      // must call parent constructor. unlike normal method
      super(name);
      // do some other fancy stuffs here
   }
}

在你的作业中,Psuedocode 将是:

class SearchEngine {
    // keyword after turn into lower
    private String lowerKeyword;

    // words is splitted by above keyword
    private String[] words;

    public SearchEngine(String keyword) {
        process(keyword);
    }

    private void process(String keyword) {
       // convert keyword to lower case and assign to lowerKeywords
       // convert keyword to separate words and assign to array words
       // index document
    }

    // or you can process your code directly in constructor
    public SearchEngine(String keyword, String someOtherParameter) {
       // convert keyword to lower case and assign to lowerKeywords
       // convert keyword to separate words and assign to array words
       // index document
    }
}

希望得到帮助:)

【讨论】:

  • 进程(关键字)是什么意思?所有的操作仍然在进程 void 方法中完成,但问题是要求在构造函数中完成所有这些操作。我真的很困惑。
  • @RafsanMobasher 我已经编辑了我的答案。我添加了另一个构造函数演示。如您所见,在构造函数中,您可以调用其他方法,也可以将 anything 放入该构造函数中。不过我更喜欢第一个构造函数。它使您的代码更干净。
  • @hqt constructor is a method that implicit return its class type. 另一种看待它的方式是,构造函数是一种显式返回其类类型但没有名称的方法;)但我想这是相当哲学的^^跨度>
  • 就 Java 语言规范而言,构造函数不是方法。这是有道理的 - 它至少在几个方面有所不同(例如,关于调用 super 的要求、没有返回类型、不能直接调用等)。
  • @OliverCharlesworth 是的。显然,我们不能说constructor **IS** a method。如果我们说:LIKE 一个方法会更合适。 :) 这只是帮助原始发布者看到构造函数和方法之间真的没有花哨。
猜你喜欢
  • 1970-01-01
  • 2018-06-30
  • 2011-04-08
  • 1970-01-01
  • 2015-12-18
  • 2019-12-11
  • 1970-01-01
  • 2012-11-26
  • 2011-12-30
相关资源
最近更新 更多