java room上没有人,所以让我在这里问一下。
OOP是一种基于对象的编码方法,可以完成一些映射,比如说一个杯子可以表示为一个Mug(Mug mug = new Mug()
),而Mug
实现了接口Grabbable
。但是,如果我们遵循这一思路,静态字段/方法会是什么?或者是static
无法映射的内容?
答案 0 :(得分:1)
在您的类比中,静态方法或字段是与所有Mug
分组但不需要使用特定(或任何)Mug
的内容。
public class Mug {
public static void doStatic() {}
public void drink() {}
}
要drink()
,您需要Mug
的实例,但是如果没有Mug.doStatic()
,您可以致电doStatic()
。但是,this
无法访问Mug
(因为它与实例无关)。
修改强>
静态类型的操作可能是工厂或构建器(用于创建Mug
),它可能正在计算Mug
s集合的某些属性,或者某些与{完全无关的操作“ {1}}类似于main
方法。
答案 1 :(得分:1)
静态字段将是所有马克杯共享的属性。例如numberOfMugsInTheCloset
。
非最终静态字段通常是不好的做法,但是......
答案 2 :(得分:0)
为了保持同样的思路,请考虑现实世界中的对象Mug。 马克杯 - 绿色 马克杯 - 红色 马克杯 - 蓝色。 考虑到所有三个杯子的形状和尺寸与颜色相同将是变体属性。 现在考虑同一个马克杯的另一个属性 - 容量。无论马克杯容量的颜色是什么(马克杯的静态特性)。 这样我们就可以将非变量属性(静态)映射到实体。