gpt4 book ai didi

java - 当一个字段属于抽象类时,它是否是静态的有什么区别吗?

转载 作者:行者123 更新时间:2023-11-29 05:31:01 24 4
gpt4 key购买 nike

public abstract class Test {

private static int value = 100;

}

public abstract class Test {

private int value = 100;

}

由于Test抽象的,它不能被实例化,因此value是否是没有任何区别>static 还是不是,对吗?

当一个字段是static 或不是属于抽象类时,有任何区别吗?

最佳答案

是的,有。即使您的类是抽象的,它也可以具有使用非静态私有(private)字段的非抽象非静态方法。它有时很有用。

虚拟示例:

考虑以下问题:您希望持有一个整数并让每个人都可以更改它,但您不希望他们设置负值或大于 15 的值,但每个人(通常)都不知道这种情况,因此您要确保当有人设置不正确的值时,它会自动修复。

这是一种可能的解决方案:

abstract class MyInt {

private int myInt;

public int getMyInt() {
return myInt;
}

public void setMyInt(int i) {
myInt = checkMyInt(i);
}

protected abstract int checkMyInt(int i);
}

现在您可以在 checkMyInt() 中执行任何逻辑并移交声明为 MyInt 的实例

pastebin exaplme

PS:这可能不是最好的解决方案,我会在这里使用接口(interface),但作为示例,我希望它足够了

关于java - 当一个字段属于抽象类时,它是否是静态的有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075107/

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