Class
可以是Java中的Object
吗?
我认为Class
是创建新Objects
的蓝图,但同时类可以有静态变量和静态方法,这些方法在没有类(对象)实例的情况下调用。
相反,Object
可以是Class
吗?
答案 0 :(得分:4)
我认为一个类是创建新对象的蓝图
正确。
但同时类可以有静态变量和静态变量 在没有类(对象)实例的情况下调用的方法。
这并不能使它成为一个对象。这只是因为有时你想拥有变量&所有对象共有的方法。这意味着我们不需要为每个类的实例提供不同的事物。
相反,一个对象可以成为一个类吗?
不,因为对象是的东西而不是模板。
如果您发现某个函数/方法不会在该类的实例之间发生变化,那么将其设为static
可能是有意义的。
答案 1 :(得分:3)
是的,没有。
不,从某种意义上说,对象是从类创建的,所以显然它们不是对象。该类的静态成员只属于该类。谁说只有对象可以有成员?
是的,从某种意义上说,您可以使用Class
类创建表示类的对象。听起来很不错,不是吗?基本上Class
类代表一个类。可以从相应的Class
对象中获取类中的所有信息(名称,方法,字段,构造函数......)。然后,您可以使用这些信息执行反射。通过反射,您可以动态调用方法,设置私有字段的值以及许多其他很酷的东西。您甚至可以从Class
对象创建对象!
答案 2 :(得分:3)
类可以是Java中的对象吗?
实际上没有。它不能是一个对象,但它可以描述对象的行为。人们可以解释一辆汽车应该如何,但他们不能被视为汽车吧?
相反,一个对象可以成为一个类吗?
没有。因为在任何时候,如果你看到,对象有一个状态而不是类。在对象中,其所有属性都具有您给定的值或默认定义的值。
以下图片可能显示出一些视觉差异
由于静态事物与状态无关,因此您将它们添加到Class而不是对象。
答案 3 :(得分:1)
正如您所提到的,您可以将一个类想象为一个对象的蓝图。创建对象时,jvm在堆中创建一些专用内存来存储对象及其值。在执行程序代码时,jvm执行方法中给出的代码。
静态变量是与一个对象实例没有直接关系的内存,它们可以被所有人(如果它们是公共的)全局访问,因此它们不是直接用对象实例内存来处理的。 (但请记住 - 静态变量也是变量类型的对象实例; - ))
静态方法是可以在没有对象实例的情况下执行的代码,因此如果它们是公共的,则每个人都可以执行此操作。
让你对这些东西的目的有所了解:
使用静态物品必须小心处理,因为它可能会破坏"许多oop原则。但是如果你考虑函数式编程,它可能非常有用。
答案 4 :(得分:0)
什么是课程?
一个类是对象的蓝图:它描述了某种对象的外观(对象由该类产生的数据以及对该数据可以执行的操作)。
什么是对象?
Object是特定类的实例。
类是逻辑实体,这意味着它们确实存在的是现实世界。物体是物质实体,我们用肉眼看到它们。
让我们举一个简单的例子......
你见过一只动物吗?
否,没有人,因为Animal(是一个类:一个逻辑实体)。
那么我在道路或动物园看到的是什么?他们不是动物吗?
不,当然不是。它们是动物类的物体(物理实体):如马,狮子,大象等。
所以,一个对象属于一个类,但不是一个类。并且一个类不能是一个Object(因为Class是逻辑的而Object是物理的。)
答案 5 :(得分:0)
由于编辑获得批准且使用了Class
和Object
这两个条款,因此答案为“是”和“是”:
“Class
可以是Java中的Object
吗?”
Object o = String.class; // yes
“Object
可以成为Class
吗?”
boolean objectIsClass = o instanceof Class; // yes