Java类可以是一个对象而对象是一个类吗?

时间:2017-11-04 11:53:04

标签: java oop

Class可以是Java中的Object吗?

我认为Class是创建新Objects的蓝图,但同时类可以有静态变量和静态方法,这些方法在没有类(对象)实例的情况下调用。

相反,Object可以是Class吗?

6 个答案:

答案 0 :(得分:4)

  

我认为一个类是创建新对象的蓝图

正确。

  

但同时类可以有静态变量和静态变量   在没有类(对象)实例的情况下调用的方法。

这并不能使它成为一个对象。这只是因为有时你想拥有变量&所有对象共有的方法。这意味着我们不需要为每个类的实例提供不同的事物。

  

相反,一个对象可以成为一个类吗?

不,因为对象是的东西而不是模板。

如果您发现某个函数/方法不会在该类的实例之间发生变化,那么将其设为static可能是有意义的。

答案 1 :(得分:3)

是的,没有。

不,从某种意义上说,对象是从类创建的,所以显然它们不是对象。该类的静态成员只属于该类。谁说只有对象可以有成员?

是的,从某种意义上说,您可以使用Class类创建表示类的对象。听起来很不错,不是吗?基本上Class类代表一个类。可以从相应的Class对象中获取类中的所有信息(名称,方法,字段,构造函数......)。然后,您可以使用这些信息执行反射。通过反射,您可以动态调用方法,设置私有字段的值以及许多其他很酷的东西。您甚至可以从Class对象创建对象!

答案 2 :(得分:3)

  

类可以是Java中的对象吗?

实际上没有。它不能是一个对象,但它可以描述对象的行为。人们可以解释一辆汽车应该如何,但他们不能被视为汽车吧?

  

相反,一个对象可以成为一个类吗?

没有。因为在任何时候,如果你看到,对象有一个状态而不是类。在对象中,其所有属性都具有您给定的值或默认定义的值。

以下图片可能显示出一些视觉差异

enter image description here 来源:维基百科

由于静态事物与状态无关,因此您将它们添加到Class而不是对象。

enter image description here

答案 3 :(得分:1)

正如您所提到的,您可以将一个类想象为一个对象的蓝图。创建对象时,jvm在堆中创建一些专用内存来存储对象及其值。在执行程序代码时,jvm执行方法中给出的代码。

静态变量是与一个对象实例没有直接关系的内存,它们可以被所有人(如果它们是公共的)全局访问,因此它们不是直接用对象实例内存来处理的。 (但请记住 - 静态变量也是变量类型的对象实例; - ))

静态方法是可以在没有对象实例的情况下执行的代码,因此如果它们是公共的,则每个人都可以执行此操作。

让你对这些东西的目的有所了解:

使用静态物品必须小心处理,因为它可能会破坏"许多oop原则。但是如果你考虑函数式编程,它可能非常有用。

答案 4 :(得分:0)

  

什么是课程?

一个类是对象的蓝图:它描述了某种对象的外观(对象由该类产生的数据以及对该数据可以执行的操作)。

  

什么是对象?

Object是特定类的实例。

类是逻辑实体,这意味着它们确实存在的是现实世界。物体是物质实体,我们用肉眼看到它们。

让我们举一个简单的例子......

你见过一只动物吗?

,没有人,因为Animal(是一个类:一个逻辑实体)。

那么我在道路或动物园看到的是什么?他们不是动物吗?

不,当然不是。它们是动物类的物体(物理实体):如马,狮子,大象等。

所以,一个对象属于一个类,但不是一个类。并且一个类不能是一个Object(因为Class是逻辑的而Object是物理的。)

答案 5 :(得分:0)

由于编辑获得批准且使用了ClassObject这两个条款,因此答案为“是”和“是”:

Class可以是Java中的Object吗?”

Object o = String.class; // yes

Object可以成为Class吗?”

boolean objectIsClass = o instanceof Class; // yes