静态Java对象和日常对象

时间:2014-07-03 02:45:23

标签: java oop

java room上没有人,所以让我在这里问一下。

OOP是一种基于对象的编码方法,可以完成一些映射,比如说一个杯子可以表示为一个Mug(Mug mug = new Mug()),而Mug实现了接口Grabbable。但是,如果我们遵循这一思路,静态字段/方法会是什么?或者是static无法映射的内容?

3 个答案:

答案 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。 马克杯 - 绿色 马克杯 - 红色 马克杯 - 蓝色。 考虑到所有三个杯子的形状和尺寸与颜色相同将是变体属性。 现在考虑同一个马克杯的另一个属性 - 容量。无论马克杯容量的颜色是什么(马克杯的静态特性)。 这样我们就可以将非变量属性(静态)映射到实体。