【问题标题】:Using methods from other classes使用其他类的方法
【发布时间】:2016-10-05 12:28:33
【问题描述】:

(a)import somePackage.someClass; 和 (b)someClass object = new someClass(); 之间的区别在于 (a) 将允许从导入的类调用方法而不创建它的新实例,而 (b) 将使用模板类,因此类someClass 的方法将属于对象object。因此,如果我想在 (b) 中使用来自 someClass 的方法 someMethod(),我会通过 object 对象调用它。是这样的吗?

【问题讨论】:

    标签: java class object methods import


    【解决方案1】:
    • 是的,您可以直接使用类中的静态方法
    • 是的,您可以通过创建对象来使用类中的方法

    但比上述可用选项更重要的是何时使用哪个选项。第一种调用是类方法,而第二种调用是实例方法。

    实例方法与类方法:每个类代表一组属性和行为。实例方法通常代表行为。例如,如果 Person 是一个类而 Robb 是一个对象,那么 robb.weight 可以是属性, robb.write() 将是一个实例方法,并且 Person.type() (ans:物种)或 Person.population (ans:总数实例)可以是类方法。

    您还可以将文本编写中的实例方法表示为 ClassName#instanceMethod 和 ClassName.classMethods

    【讨论】:

      【解决方案2】:

      不,你错了

      简单地说,如果您要使用的类不在同一个 package 中,那么您需要导入它,或者完全路径类,例如java.util.ArrayList.

      如果方法不是静态的,那么您将需要创建您要使用的类的新实例。

      【讨论】:

      • 但是第二种方法不是创建一个新对象吗?
      【解决方案3】:

      只有当它是静态方法时,才能直接使用其他类的方法。如果您想直接使用方法名称而不在类名称前面加上前缀,您还必须在导入语句中添加静态。 对于非静态方法,您必须创建类的实例,然后调用该方法。

      【讨论】:

      • you will also have to add static in your import statement. - 错了,只有当你想直接使用方法名而不是类名前缀时才需要这样做
      • @scary 你是对的。我想说的是import somePackage.someClass; 应该包含问题中缺少的静态关键字。我已经编辑了我的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      相关资源
      最近更新 更多