gpt4 book ai didi

java - 有一个不使用实例变量的非静态方法有意义吗?

转载 作者:IT老高 更新时间:2023-10-28 21:07:14 26 4
gpt4 key购买 nike

编译器不允许静态方法调用非静态方法。我理解它这样做是因为非静态方法通常最终使用实例变量。

但是有一个不使用实例变量的非静态方法有意义吗?如果我们有一个不影响或不受实例状态影响的行为,那么这种方法不应该被标记为静态的。

最佳答案

当然!假设您在 interface IMyCollection 中有。它有一个方法 boolean isMutable().

现在您有两个类,class MyMutableListclass MyImmutableList,它们都实现了 IMyCollection。它们中的每一个都将覆盖实例方法isMutable()MyMutableList 只返回trueMyImmutableList 返回.

isMutable() 在两个类中都是一个实例方法,(1) 不使用实例变量,(2) 不影响实例状态。然而,由于语言的限制(不可能覆盖静态方法),这种设计是唯一实用的设计。

另外,我想澄清一个误解(正如@manouti 所做的那样):非静态方法不是实例,因为它们使用任何实例变量或影响实例状态;它们是实例方法,因为它们是这样定义的(没有 static 关键字),因此具有隐式 this 参数(在 Python 等语言中,实际上是显式的!)。

关于java - 有一个不使用实例变量的非静态方法有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31814233/

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