gpt4 book ai didi

Java 抽象类(this 关键字)

转载 作者:行者123 更新时间:2023-12-01 06:46:19 25 4
gpt4 key购买 nike

我想我误解了一些东西,如果是这样,我需要帮助..

假设我有以下两个类(class):

public abstract class Abstraction() {
protected int number = 0;
public void printNumber() {
System.out.println(this.number);
System.out.println(getNumber());
}
public int getNumber() {
return this.number();
}
}

public class Reality extends Abstraction {
int number = 1;
public Reality() {
this.printNumber();
}
}

// some other class
new Reality();

输出应该是什么?我得到 0, 0 (这里的代码有点复杂,但仍然是同样的问题)。如何使输出为 1,1?

最佳答案

Reality 类中的number不会覆盖numberAbstraction 类中。因此,Abstraction类仍然将自己的number值视为0

解决方案是:

public class Reality extends Abstraction {
public Reality() {
number = 1;
this.printNumber();
}
}

由于 Abstraction 中的 number 受到保护,因此您可以在 Reality 类中访问它。

<小时/>

另一个例子是方法中的参数:

private int number;

public void myMethod(int number){
number = 2;
}

您的私有(private)整数字段不会被设置,而是参数数字将被设置为2

<小时/>

最后,关于 thissuper 关键字,请参阅对类的编辑:

public abstract class Abstraction() {
protected int number = 0;
public void printNumber() {
System.out.println(this.number);
System.out.println(getNumber());
}
public int getNumber() {
return this.number();
}
}

public class Reality extends Abstraction {
int number = 1;
public Reality() {
System.out.println(number); //Will print 1
System.out.println(this.number); //Will print 1
System.out.println(super.number); //Will print 0
}
}

关于Java 抽象类(this 关键字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11884362/

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