gpt4 book ai didi

java方法内部变量上没有 "this"参数

转载 作者:行者123 更新时间:2023-12-01 09:26:47 29 4
gpt4 key购买 nike

我运行了一些java代码,我看到了一些我不太明白的东西。为什么下面的代码可以在不输入 this 的情况下工作?前面diameter

class Shape {
public double area ()
{
return 0;

}
}


class Circle extends Shape {
Circle (double diameter) {
this.diameter = diameter;
}
private static final double PI = Math.PI;
private double diameter;

public double area () {
double radius = diameter / 2.0; <-------- LOOK HERE
return PI * radius * radius;
}

}

public class Main {
public static void main(String[] args) {
Shape s1 = new Circle (2.5);
System.out.println (s1.area());

}
}

无论有或没有this.diameter/diameter,代码都可以完美运行。

最佳答案

在构造函数 Circle(double Diameter) 中,函数参数 diameter遮蔽类的字段。

除非您另有说明(通过编写 this.diameter),编译器将假定您引用的是函数参数而不是字段。在 Java 构造函数代码中编写 this.foo = foo 是惯用的。

在你的函数area()中,不存在这样的歧义:this.diameterdiameter两者请参阅该字段。

关于java方法内部变量上没有 "this"参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39768917/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com