Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
静态Java对象和日常对象_Java_Oop - Fatal编程技术网

静态Java对象和日常对象

静态Java对象和日常对象,java,oop,Java,Oop,没有人接受,所以让我在这里问一下 OOP是一种基于对象的编码方法,可以进行一些映射,例如说一个杯子可以表示为一个杯子(mug-mug=new-mug()),并且mug实现接口Grabbable。但如果我们遵循这一思路,静态字段/方法会是什么?或者说,static是无法映射的吗?在您的类比中,静态方法或字段是指与所有Mug分组,但不需要使用特定(或任何)的Mug public class Mug { public static void doStatic() {} public void

没有人接受,所以让我在这里问一下


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

在您的类比中,静态方法或字段是指与所有
Mug
分组,但不需要使用特定(或任何)的
Mug

public class Mug {
  public static void doStatic() {}
  public void drink() {}
}
drink()
您需要一个
Mug
的实例,但是您可以调用
Mug.doStatic()
,而不需要一个实例。但是,
doStatic()
无法访问
(因为它与实例无关)

编辑


静态类型的操作可能是工厂或生成器(用于创建
Mug
s),可能是计算
Mug
s集合的某些属性,或者与
Mug
s完全无关的操作,如
main
方法。

静态字段将是所有Mug共享的属性。例如,
numberofmugsintheclose


非最终静态字段通常是一个很坏的实践,但是……/P> < P>为了保持相同的思路,从真实世界对象MUG中考虑这个问题。 马克杯-绿色 马克杯-红色 马克杯-蓝色。 考虑到所有三个杯子的形状和大小都相同,颜色将是不同的属性。 现在考虑另一个相同容量的属性。无论杯子的颜色是什么,容量都是相同的(杯子的静态属性)。


通过这种方式,我们可以将非变量属性(静态)映射到实体。

通常,人们倾向于将静态方法与多个\所有杯子联系起来,有点像实用方法,实例方法用于更改特定杯子的状态。我想象一组杯子通过手柄悬挂在一根水平金属杆上,在一根杆上方。调酒师将离末端最近的一个滑下,装满,然后递给顾客。电杆是静止的。只有一根杆子,所有的杯子都用它。不要对这种类比感到太激动。在现实世界中,OOP对象不用于表示现实世界的对象:它们用于表示编程构造,例如连接、语句、集合、套接字、通道、缓冲区、列表、线程、进程、流等等。。。原因是客户也可以是供应商,员工可以成为经理,反之亦然,普通客户可以成为财富客户,反之亦然……这难道不是壁橱收藏的财产吗,我不明白为什么任何杯子都需要知道壁橱,或者一个壁橱里有多少个杯子。@AlexandreSantos我完全同意,真是糟糕的设计。现在我还没有一个静态字段的例子,它在一个设计良好的应用程序中是有意义的……是的,这是Java中静态的定义方式,但没有描述现实生活中的对象可以映射到静态字段的内容。你会不会有另一个例子,一个现实生活中的动作、属性或属性,在现实生活中与OOP中的静态是等价的?这会更有意义。让杯子知道创建了多少个杯子。考虑到杯子可以在不同的工厂中创建,工厂应该知道它创建了多少个杯子,而不是一般创建了多少个杯子。难道不能在杯子的界面中定义容量吗<代码>公共类Mug实现Grabbable,容量?不,我看不出有任何理由在Grabbable中定义容量。它将在杯子中定义。你会说所有杯子都有相同的容量吗?是的,我在回答“考虑到所有杯子的形状和大小都是相同的”时提到了相同的容量。