java - 是否有必要始终在构造函数中调用它?

标签 java this

假设我创建了这个类:

public class Panel extends JPanel{
    private JTextBox textBox;
    public Panel(){
        this.textBox = new JTextBox(10);
        add(this.textBox);
    }
}

在我的主要内容中:

public class Main{
    public static void main(String[] args){
        Panel panel1 = new Panel();
        Panel panel2 = new Panel();
    }
}

在类里面Panel ,是否需要调用this在每一行,或者我可以把它放在一边吗?或者它会弄乱 Panel是吗?

最佳答案

仅当您收到的参数与类中声明的字段同名时才需要这样做:

public class Foo {
    int x;
    int y;
    public Foo(int x) {
        this.x = x; //here is necessary
        y = -10; //here is not
    }
}

另一个奇怪的场景是当子类隐藏父类(super class)的字段时。这是一个例子:

class Bar extends Foo {
    int y; //shadows y field in Foo
    public Bar(int x) {
        super(x); //calling constructor of super class
        super.y = -5; //updating y field from super class
        this.y = 10; //updating y field from current class
    }
}

有关后者的更多信息:Java Tutorial. Hiding Fields 。请注意,这很奇怪,因为您应该避免这种情况。这在技术上是可行的,但使代码更难以阅读和维护。有关此的更多信息:What is variable shadowing used for in a Java class?

关于java - 是否有必要始终在构造函数中调用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25367256/

相关文章:

java - 在apachecamel中聚合后生成多个文件

javascript - jQuery 选择返回未定义

javascript - Javascript 箭头函数是在创建时永久绑定(bind)还是根本不绑定(bind) : the case of object and class methods

javascript - 将 <a></a> 标签的内部文本作为参数发送给 JavaScript 函数

javascript - 如何在不在外部缓存的情况下将 'this' 传递给 Promise?

java - 为什么嵌套循环不单独添加值,而是将所有值加在一起?

java - 继承类的 ClasscastException

java - 哪个是更合法的递归辅助方法?

Java将图像转换为字符数有限的字符串

c++ - 在 C++ 中删除此指针的行为