通过java中的类、对象和this分别调用方法有什么不同

时间:2022-09-30 12:45:18
举个例子,我看到了下面三种写法,不知道一不一样,求解

public class Person{
  ...
  Person p;
  ...
  Person.getName();
  ...
  p.getName();
  ...
  this.getName();
  ...
}

11 个解决方案

#1


这个问题有深度,

我估计如果像LZ这样写,三者都是不能用的,建议LZ还是自己测试吧

具体的我说不清楚,期待高人

#2


恩 我的理解
类是调用静态方法变量的 对象是调用非静态方法变量的 当然也可以调用静态的 不推荐这么写 this是指代当前对象的

#3


引用 1 楼 xiaohuanjie 的回复:
这个问题有深度,

我估计如果像LZ这样写,三者都是不能用的,建议LZ还是自己测试吧

具体的我说不清楚,期待高人


我现在没有思路,所以没办法测试

#4


方法的作用域和调用位置问题。

#5


Person.getName();
getName为Person的静态类。

p.getName();
实例化Person p对象,调用其getName方法。

this.getName();
Person内部调用或子对象调用getName方法。

#6


this即使这个类

#7


引用 6 楼 ababababab 的回复:
Person.getName();
getName为Person的静态类。

Person.getName();
getName为Person的静态方法,Person类无需实例化即可调用

#8


public class Person{
  ...
  Person p;
  ...
  Person.getName();        // 调用 Person 中 static 的 getName() 方法
  ...
  p.getName();             // 调用 Person 实例 p 的 getName() 方法 
  ...
  this.getName();          // 调用当前实例的 getName() 方法 
  ...
}

还有一种 Person.this.getName()    // 在 Person 的内部类中调用当前实例 Person 的 getName() 方法。

另外 Person.getName() 与 p.getName() 两个同名的方法(一个静态,一个非静态)是不允许同时出现的。

#9


引用 8 楼 bao110908 的回复:
public class Person{
...
Person p;
...
Person.getName(); // 调用 Person 中 static 的 getName() 方法
...
p.getName(); // 调用 Person 实例 p 的 getName() 方法
...
this.getName(); // 调用当前实例的 getName() 方法
...……


通过java中的类、对象和this分别调用方法有什么不同

#10


引用 9 楼 xiaohuanjie 的回复:
引用 8 楼 bao110908 的回复:
public class Person{
...
Person p;
...
Person.getName(); // 调用 Person 中 static 的 getName() 方法
...
p.getName(); // 调用 Person 实例 p 的 getName() 方法
...
this.getName(); // 调用……


厉害

#11


分太少,再加20

#1


这个问题有深度,

我估计如果像LZ这样写,三者都是不能用的,建议LZ还是自己测试吧

具体的我说不清楚,期待高人

#2


恩 我的理解
类是调用静态方法变量的 对象是调用非静态方法变量的 当然也可以调用静态的 不推荐这么写 this是指代当前对象的

#3


引用 1 楼 xiaohuanjie 的回复:
这个问题有深度,

我估计如果像LZ这样写,三者都是不能用的,建议LZ还是自己测试吧

具体的我说不清楚,期待高人


我现在没有思路,所以没办法测试

#4


方法的作用域和调用位置问题。

#5


Person.getName();
getName为Person的静态类。

p.getName();
实例化Person p对象,调用其getName方法。

this.getName();
Person内部调用或子对象调用getName方法。

#6


this即使这个类

#7


引用 6 楼 ababababab 的回复:
Person.getName();
getName为Person的静态类。

Person.getName();
getName为Person的静态方法,Person类无需实例化即可调用

#8


public class Person{
  ...
  Person p;
  ...
  Person.getName();        // 调用 Person 中 static 的 getName() 方法
  ...
  p.getName();             // 调用 Person 实例 p 的 getName() 方法 
  ...
  this.getName();          // 调用当前实例的 getName() 方法 
  ...
}

还有一种 Person.this.getName()    // 在 Person 的内部类中调用当前实例 Person 的 getName() 方法。

另外 Person.getName() 与 p.getName() 两个同名的方法(一个静态,一个非静态)是不允许同时出现的。

#9


引用 8 楼 bao110908 的回复:
public class Person{
...
Person p;
...
Person.getName(); // 调用 Person 中 static 的 getName() 方法
...
p.getName(); // 调用 Person 实例 p 的 getName() 方法
...
this.getName(); // 调用当前实例的 getName() 方法
...……


通过java中的类、对象和this分别调用方法有什么不同

#10


引用 9 楼 xiaohuanjie 的回复:
引用 8 楼 bao110908 的回复:
public class Person{
...
Person p;
...
Person.getName(); // 调用 Person 中 static 的 getName() 方法
...
p.getName(); // 调用 Person 实例 p 的 getName() 方法
...
this.getName(); // 调用……


厉害

#11


分太少,再加20