(1) 对象生命周期的开始java
对象生命周期开始时,须要为对象分配内存(在内存运行时数据区的堆区中为对象分配内存),而且初始化它的实例变量;函数
对象生命周期结束ui
Java虚拟机的垃圾回收线程回收对象的内存,通常只要Java程序中没有变量引用某个对象,该对象的生命周期结束,所以能够经过控制变量的生命周期来控制对象的生命周期。this
(2) 建立一个对象指建立一个类的实例,前提是类被初始化,对象能够被显式或者隐式建立,显式建立对象有如下几种方式spa
a. new语句建立对象.net
b.利用反射机制,调用java.lang.Class的forName()(获得java.lang.Class对象的实例)和java.lang.reflect.Constructor的newInstance()方法(获得该类的对象的实例)命令行
[java] view plaincopy线程
Class objClass = Class.forName("Customer"); orm
Customer c = (Customer)objClass.newInstance(); 对象
c.调用对象的clone()方法(clone()方法没有调用构造函数,建立一个复制的对象,属性与原对象彻底相同,保存在不一样的内存地址中)
d.运用反序列化方法,调用java.io.ObjectInputStream类的readObject()方法
(3)使用new或者反射的方法时,会执行类的构造函数,使用对象的clone方法,不会调用构造函数。
(4)关于clone()
a. Object类中声明为protected类型,若是Object的子类想对外公开clone()方法,须要扩大访问权限;
b. 使用clone()方法须要实现Cloneable接口;
c.调用clone()方法会建立一个复制的对象,这个对象和原来的对象具备不一样的内存地址,可是他们的属性值相同;
(5)隐式地建立对象
a. java命令的命令行参数
b. String类型的直接数对应一个String对象
c. 字符串操做符“+”结果为一个新的String对象
d. JVM加载类时,建立的Class类型的对象
(6)建立对象的步骤(无论以何种方式建立对象,步骤都有如下三步)
a.分配内存
b.将实例变量初始化为默认值
c.初始化对象为正确的值
(7)根据对象建立方式的不一样 ,初始化有如下三种方式
a.clone,直接用源对象的属性初始化新对象的属性值
b.若是对象的声明语句中显式初始化,则先进性显式初始化,接着再执行构造函数
(8)构造方法的定义
a.方法名与类名相同
b.没有返回类型
c.不可以用static(构造函数和实例相关),final(构造函数不可以被继承,所以不可以被重写,定义成final画蛇添足),synchronized,native(不提倡调用本地方法,不然平台相关),abstract(构造函数不能被覆盖,所以不可以是abstract类型)修饰
(9)构造函数能够重载,能够在一个构造函数中经过this调用另一个构造函数
(10)this的使用
a.必须做为第一条语句出现
b.只能在构造函数中经过this调用其余构造方法,不可以在实例方法中经过this调用构造方法,可是能够经过this调用其余的成员
c.不可以经过方法名调用构造函数
(11)默认构造方法(定义就是,没有参数的方法叫作默认构造方法)
a.没有参数的构造方法
b.有两种,一种是隐式构造方法,有java提供,另一种是在程序中显式定义默认构造方法,只要没有参数就好了
c.若是一个类中的全部构造函数都有参数,那么这个类就没有默认构造方法,若是一个类中有显式定义默认构造方法,那么这个类就没有隐式默认构造方法
(12)构造方法不可以被继承(因此没必要定义成为final或者abstract类型的)
(13)super
a.子类的构造方法中,只可以经过super调用父类的构造方法,不可以经过方法名调用;
b.做为子类构造方法的第一句;
(14)若是父类没有默认构造方法(全部的方法都有参数),子类没有使用super或者super中没有参数,则会出现编译错误
(15)构造方法能够有private,protected,public和默认四种访问级别
(16)关于private的构造方法
只可以在当前类中访问
a.当前类中的其余构造方法经过this访问
b.当前类中的成员方法经过new访问
构造方法能且仅能经过this调用类中的其余构造方法,成员方法能且仅能经过new调用类中的构造方法
(17)什么时候将构造函数定义为private:
a.类的全部方法都是静态方法,无需建立类的实例就能够调用静态方法
b.禁止类被继承,且不容许建立类的实例
(18)private构造方法vsfinal类(建立实例方买呢)
前者既不容许建立类的实例,又不容许类被继承
后者能够经过new建立类的实例,但不容许类被继承
()private构造方法vsabstract类
后者虽本类不可以被实例化,可是能够有实例(可是拥有子类的实例),可是但愿经过继承实现类中的抽象方法,而前者不可以被继承