构造器:
就是构造函数,之前使用构造函数都是为了传递一些参数给一个类,其实这很好的保证了初始化。构造函数的名字与类名相同,在实例化一个类的时候,java先自动的调用它的构造方法,所以这提醒你必须传进去应该传进去的一些参数,否则会报错。这样java类中的数据的初始化和实例化捆绑在了一起,两者永不分离,提醒你必须去实例化一些数据。而且一个类继承了它的父类总是在调用他自己的构造函数的时候先调用父类的构造函数,验证代码如下:
class B{ B(){ System.out.println("这是B的构造方法"); } } public class Test extends B{ Test(){ System.out.println("这是Test的构造方法"); } public static void main(String[] args) { Test test = new Test(); } }
运行结果是
这是B的构造方法
这是Test的构造方法
所以验证了一个类继承了它的父类总是在调用他自己的构造函数的时候先调用父类的构造函数在调用自己的构造方法。
构造函数是不可能有返回值的,而且也不可能是void,构造方法唯一可以加的修饰符就是限制访问权限的修饰符了吧。一直在想构造函数是不是静态的,在《think in java》里说 构造方法是静态的,我感觉因为他在没有对象的时候就可以调用,所以是静态的,但是静态方法中不可以使用this关键字,明显构造方法里可以使用this关键字,所以他又不应该是静态的。最后我还是决定暂时认为他不是静态的。
ps:我猜可能作者这样说是因为构造函数和静态方法的都是在类没有实例化的时候就开辟了一块空间吧。Maybe,i really don't know是不是构造函数是独立的一块空间,不随实例化而改变。
原文地址:http://www.cnblogs.com/969059506-java/p/3722419.html