Java parameter.method或argument.method如何可能?我以为这总是课堂教学法。有人能解释一下吗?
我是java新手,我一直被教导它总是class.method,现在这段代码有另一个.getX,这让我非常困惑。我从未意识到参数或参数。方法是可能的。有人能解释它是如何工作的吗Java parameter.method或argument.method如何可能?我以为这总是课堂教学法。有人能解释一下吗?,java,Java,我是java新手,我一直被教导它总是class.method,现在这段代码有另一个.getX,这让我非常困惑。我从未意识到参数或参数。方法是可能的。有人能解释它是如何工作的吗 public class Point { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { retu
public class Point {
private int x;
private int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public Point() {
this(0,0);
}
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public double distance (){
double distance = Math.sqrt((x - 0) * (x - 0) + (y - 0) * (y - 0));
return distance;
}
public double distance (int x, int y){
double distance = Math.sqrt((x-this.x) * (x-this.x) + (y-this.y) * (y - this.y));
return distance;
}
public double distance (Point another){
double distance = Math.sqrt((another.x - x) * (another.x - x) + (another.y - y) * (another.y - y));
return distance;
}
}这是可能的
对于这类事情,Java语言规范§15.1中对其进行了很好的定义。这是一段摘录:
如果表达式表示一个变量,并且需要在进一步计算中使用一个值,则使用该变量的值。在这种情况下,如果表达式表示变量或值,我们可以简单地说表达式的值
这意味着someObject.someMethod()
可能会生成一个结果类型的值
下面是一个例子:
class A {
B getB() {
return new B();
}
}
class B {
C getC() {
return new C();
}
}
class C {
String getString() {
return "Hello World!";
}
}
您可以像这样“链接”您的方法调用:
A myA = new A();
String str = myA.getB().getC().getString().toUpperCase();
System.out.println(str); // Prints "HELLO WORLD!"
结果是:
是一个myA
A
返回AA.getB()
B
返回aB.getC()
C
返回一个C.getString()
字符串
- String.toUpperCase()
返回一个
字符串
,因此最终结果是一个
字符串
,该字符串存储在
str`变量中
还有一些注释:
SomeClass.someMethod()
表示静态方法。如果当前类是SomeClass
,则可以省略类名someVariable.someMethod()
,但是,它是一种实例方法,只能对实例调用。您可以对任何对象调用方法。只要expr
是一个对象,就可以执行(expr).someMethod()
。否则,创建方法有什么意义呢?代码似乎根本没有另一个.getX。它有另一个.x,如果x
是私有的,它就不能工作。请注意,另一个
是一个变量,它引用了点
的实例,因此它实际上是一个类。如果您有另一个.getX()
,则该类将调用其getX
方法。