原文地址: http://www.java2000.net/p11583
这里主要看类的构造器的情况,默认的,无参数的,有参数的,有不同参数类型的,有多个参数的等各种情况。
- package lession7;
- /**
- * 老紫竹JAVA基础培训(7),构造器的使用.<br>
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- public class Lession7 {
- public static void main(String[] args) {
- new class1(); // 使用了系统自动提供的无参数构造器
- new class2(); // 使用了手工编写的无参数构造器
- new class3(); // 使用无参数构造器
- new class3( "java2000.net" ); // 使用有参数构造器
- // new class4(); // 使用无参数构造器失败
- new class4( "java2000.net" ); // 调用有参数构造器
- new class5(); // 使用无参数构造器
- new class5( "java2000.net" ); // 调用有参数构造器
- new class5( 1 ); // 调用有参数的构造器
- new class5( "java2000.net" , 1 ); // 带2个参数的构造器
- }
- }
- class class1 {
- // 此类没有写任何构造器
- // 系统会自动提供一个默认的 public 的无参数构造器
- }
- class class2 {
- // 手工编写的无参数构造器
- // 如果只有这个构造器,则和class1没有任何区别
- public class2() {
- }
- }
- class class3 {
- // 无参数的构造器
- public class3() {
- }
- // 有参数的构造器
- public class3(String name) {
- }
- }
- class class4 {
- // 这个类只有一个带参数的构造器
- // 系统不会自动生成无参数的构造器的
- public class4(String name) {
- }
- }
- class class5 {
- // 无参数构造器
- public class5() {
- }
- // 带字符串参数的构造器
- public class5(String name) {
- }
- // 带整形数字参数的构造器
- public class5( int age) {
- }
- // 带2个参数的构造器
- public class5(String name, int age) {
- }
- }
测试, 记得每次测试后恢复现场哦 :
1 如果你已经写了其它的构造器,则默认的无参数构造器就不存在了,尝试把
// new class4(); // 使用无参数构造器失败
前面的注释去掉,看看输出结果
2 尝试在一个class4再增加一个字符串为参数的构造器看看
- public class4(String address){
- }
3 尝试把 public 的构造器改成 private 的看看编译结果
4 尝试把 public 的构造器,改成默认的,也就是没有修饰符的看看,比如
- class4(String name){
- }
6 把类挪到另外一个目录,切按照4改成默认的,然后编译看看
总结:
1 没有任何构造器的类,系统会自动提供一个无参数的public的构造器
2 如果有了任何的构造器,系统不再提供
3 构造器的参数类型和个数,顺序不能完全相同,这个和参数的名字没关系,只和类型有关