这是来到达内的第一个星期,这个星期还没有正式开课主要就是熟悉环境,上一下训练营。训练营其实就是对完全没接触过编程的人的前期铺垫,当然我是例外。这个星期我主要是通过达内的内部资源(ppt和视频)自学,颇有收获,但是我想将这些留到后面讲。现在谈一下我偶然发现的问题。

       一般的,我们通常只在一个.java文件中写一个类,但这个类中有时有一个和类名同名的方法且没有返回值有时又没有那么它到底是什么呢?

       通过查阅资料我知道了它是构造器。

       构造器其实就是一个方法但没有返回值,其作用就是初始化成员变量,一个类可以有多个构造器,构造器不能有以下非访问性质的修饰: abstract, final, native, static, 或者 synchronized。构造器分为缺省构造器和非缺省构造器。

非缺省构造器又分为:实例构造器和静态构造器。实例构造器负责初始化类中的实例变量,它只有在用户用new关键字为对象分配内存时才被调用。而且作为引用类型的类,其实例化后的对象必然是分配在堆上。用户只声明对象是不会产生构造器调用的。

缺省构造器是在一个类没有声明任何构造器的情况下,编译器强制为该类添加的一个无参数的构造器,该构造器仅仅调用父类的无参数构造器。缺省构造器实际上是编译器为保证每一个类都有至少一个构造器而采取的附加规则。注意这里的三个要点:

1.子类没有声明任何构造器;

2.编译器为子类加的缺省构造器一定为无参数的构造器;

3.父类一定要存在一个无参数的构造器。

       构造器在继承时需要特别的注意,为了保证父类成员变量的正确初始化,子类的任何构造器默认的都必须调用父类的某一构造器,具体调用哪个构造器要看构造器的初始化参数列表。如果没有初始化参数列表,那么子类的该构造器就调用父类的无参数构造器;如果有初始化参数列表,那么子类的该构造器就调用父类对应的参数构造器。

我们看到类的构造器的声明中有public修饰符,那么当然也可以有protected/private/ internal修饰符。根据修饰符规则,我们如果将一个类的构造器修饰为private,那么我们在继承该类的时候,我们将不能对这个private的构造器进行调用,我们是否就不能对它进行继承了吗?正是这样。实际上这样的类在我们的类内的成员变量都是静态(static)时,而又不想让类的用户对它进行实例化,这时必须屏蔽编译器为我们暗中添加的构造器(编译器添加的构造器都为public),就很有必要作一个private的实例构造器了。protected/internal也有类似的用法。

构造器是为了创建一个类的实例。这个过程也可以在创建一个对象的时候用到:Platypus p1 = new Platypus(); 构造器可以用来在初始化对象时初始化数据成员,一个类可以有多个构造器。一个类的构造器的名称必须与该类的名称一致。要退出构造,可以使用返回语句”return;”。

用法:

构造器和方法使用关键字this有很大的区别。方法引用this指向正在执行方法的类的实例。静态方法不能使用this关键字,因为静态方法不属于类的实例,所以this也就没有什么东西去指向。构造器的this指向同一个类中,不同参数列表的另外一个构造器,

 

版权声明:本文为shockheaded原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/shockheaded/p/10631573.html