从逻辑上讲,method(xyz)和xyz.method()之间有什么区别?

时间:2017-09-16 08:46:35

标签: java methods

我知道第一个xyz在method(xyz)中传递,其中xyz可以是变量或java中的String,此外方法本身由用户定义,因此可以(或不)返回取决于由编码员写的身体。

但现在这里是第二个xyz.method(),我们在这里知道xyz是对象 我们是否像第一个一样将xyz传递给这个方法。我的意思是里面发生了什么这是怎么回事?

请深刻解释一下,你可以从这个或任何一个中做出任何一个例子。

  1. str.length();
  2. str.toChar();

3 个答案:

答案 0 :(得分:1)

xyz.method() - >要使其工作,方法将由编写类XYZ的人在类XYZ中公开。由于对象本身是调用方法,它知道自己,因此没有像对象xyz传递给方法。但是在该方法中,xyz将可用,因为xyz是被调用者对象。

方法(xyz) - >在任何期望类型为XYZ的对象的类中编写的方法,此方法不一定是XYZ类的一部分。这里xyz作为参数传递给方法,因此不可用。

答案 1 :(得分:1)

method(xyz)表示您正在调用当前类中定义的方法。

xyz.method()表示xyz是某个类的对象(比如XYZ),并且您正在调用XYZ类中定义的方法。

此代码段对您更有帮助

class XYZ {
    public void method() {
        // some code here
    }
}

class SomeOtherClass {
    public void method1(XYZ xyz) {
        xyz.method();  // case two
    }

    public void mainMethod() {
        XYZ xyz = new XYZ();
        method1(xyz);   // case one
    }
}
第一种情况

xyz是方法的参数。

第二种情况

我们想要调用类XYZ中定义的方法。但你不能像我们在第一种情况下那样直接访问它。要访问在其他类中定义的方法或字段,我们必须创建该类的实例(在我们的示例中为xyz),并且通过该实例,我们可以访问这些方法,前提是这些方法不是私有的。

答案 2 :(得分:1)

从面向对象来看,存在逻辑差异。例如,如果我们调用方法kill,则xyz.kill()表示对象xyz自杀,如果我们调用方法kill(xyz),则有人杀死xyz。

如果方法不是静态的,那么从技术上来说存在逻辑差异。 xyz.method()表示xyz不能是null(只要该方法是非静态的)。 method(xyz)表示xyz可以为null,也可以是其他内容。

此外,没有逻辑差异。