构造方法
- 定义:负责对象的初始化工作,并为实例变量赋予合适的初始值。
- 作用:构造出一个类的实例;
- 构造方法在调用执行之后是有返回值的,但是不用写“return”语句,因为构造方法结束的时候java程序自动返回值,返回值类型是构造方法所在类的类型,由于构造方法的返回值类型就是类本身,所以返回值类型不需要编写。
- 当一个类你没有自定义构造方法的话,系统默认提供一个无参构造,这个构造方法称为缺省构造器。
- 如果手动定义了构造方法,那么系统将不再提供缺省构造器。
- 构造方法支持重载
- 实例变量的内存空间是在构造方法执行的过程中完成开辟的,同样的,实例变量的初始化也是在构造方法执行的过程中完成的。
- 书写要求:方法名与类名相同;不要写返回类型(如void、return等);不能被static、final、native、abstract和synchronized修饰,不能被子类继承。
实例方法
- 无static修饰,也叫非静态方法
- 当类的字节码文件被加载到内存时,类的实例方法并没有被分配入口地址,只有该类的对象被创建后,才会给实例方法分配入口地址,从而实例方法可以被类创建的所有对象调用 ,还有一点就是,当第一个类的对象被创建时,实例方法的入口地址会完成分配,后续创建对象时,不会再分配入口地址,即该类的所有对象共用实例方法的入口地址,当该类的所有对象都被销毁时,入口地址才会消失。
- 实例方法可以引用实例变量和类变量
- 实例方法可以使用super和this关键字
- 实例方法中可以调用类方法
类方法
- 有static修饰,也叫静态方法。
- 当类的字节码文件被加载到内存时,类方法的入口地址就会完成分配,所以类方法不仅可以被该类的对象调用,也可以直接通过类名完成调用,类方法的入口地址只有程序退出时才消失。
- 类方法中不能引用实例变量,因为给类方法分配内存地址的时候,实例变量还未分配内存地址。
- 在类方法中不能使用super和this关键字,因为super和this分别是指向父类和本类的对象,在类方法中调用的时候,这些指代的对象可能还没有创建出来。
- 类方法中不能调用实例方法。
|