我知道第一个xyz在method(xyz)
中传递,其中xyz可以是变量或java中的String,此外方法本身由用户定义,因此可以(或不)返回取决于由编码员写的身体。
但现在这里是第二个xyz.method()
,我们在这里知道xyz是对象
我们是否像第一个一样将xyz传递给这个方法。我的意思是里面发生了什么这是怎么回事?
请深刻解释一下,你可以从这个或任何一个中做出任何一个例子。
str.length();
str.toChar();
答案 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,也可以是其他内容。
此外,没有逻辑差异。