在面向对象程序设计中,"类"在实例化之后叫做一个"实例"。 "类"是静态的,不占进程内存,而"实例"拥有动态内存。
实例(instance)和对象(object)的区别:
- 对象就是类的实例,所有的对象都是类的实例,但并不是所有的实例都是对象。
- 抽象类被定义为永远不会也不能被实例化为具体的对象。
凡是类生成的对象,分为(引用,无动态内存分配;非引用,有动态内存分配):
- 抽象类生成的对象,不是实例化对象,只是生成对象。此时可以说"生成对象"(无动态内存分配),但是不能说生成"实例化对象"。
- 就自定义的类而言(非抽象类)生成的对象,有实例化对象(有动态内存分配),也有生成对象(无动态内存分配)。此时可以说"实例化对象"(动态内存分配),"生成对象"(无动态内存分配)。
总结简记:没有分配内存的都是生成对象,分配内存的都是实例化对象。
package test;
abstract class AbstractInstanceAndObject {
}
public class InstanceAndObject {
public static void main(String[] args) {
AbstractInstanceAndObject abstractInstanceAndObject = null;
InstanceAndObject object = null;
扫描二维码关注公众号,回复: 1024333 查看本文章Integer integer = new Integer(10);
InstanceAndObject example = new InstanceAndObject();
System.out.println("\n\tAbstractInstanceAndObject生成对象\n");
System.out.println(abstractInstanceAndObject instanceof Object);
System.out.println(abstractInstanceAndObject instanceof AbstractInstanceAndObject);
System.out.println(abstractInstanceAndObject);
System.out.println("\tInstanceAndObject生成对象\n");
System.out.println(object instanceof Object);
System.out.println(object instanceof InstanceAndObject);
System.out.println(object);
System.out.println("\tInteger实例化对象\n");
System.out.println(integer instanceof Object);
System.out.println(integer instanceof Integer);
System.out.println(integer.hashCode());
System.out.println(integer);
System.out.println("\tInstanceAndObject实例化对象\n");
System.out.println(example instanceof Object);
System.out.println(example instanceof InstanceAndObject);
System.out.println(example.hashCode());
System.out.println(example);
}
}