java构造器方法重载

构造函数和重载这种最早在C++里见识过的东西,对于JAVA新手来说,感觉也没啥神奇的

java里的构造器名字必须跟类名完全一致,但是假如构造器方法不带任何参数,就可以省略掉;也就是说用new创建类对象的时候,类名后面的()中如果不带参数,会默认分配存储空间,并自动调用省略掉的默认构造器(你写了也无妨),而假如带有参数,类里的构造器方法重载必须自行重写,系统默认调用的构造器是不带任何参数的

$ cat hello.java
import java.util.*;

class MyClass {
        MyClass(int a){
                System.out.println("First!" + a);
        }
        MyClass(float b){
                System.out.println("First!");
        }
}

public class hello {
        public static void main(String[] args){
                new MyClass(1111);
                new MyClass();
        }
}

这里MyClass类里提供了两个构造器重载方法,他们都有参数,但是类型不同,在new MyClass(1111)的时候,会调用int a这个构造器,但是在new MyClass()的时候,实际上会调用MyClass()这个构造器,但是此时类里并不存在,解决方法就是要么类里一个构造器也没有,那么就会自动调用没有参数的默认构造器;如果类里有其它带参数构造器,就必须添加一个不带任何参数的构造器方法

发表评论