构造方法的重载
构造方法的名称和类同名,没有返回类型。尽管构造方法看起来和一般的成员方法没有差别,但它不是方法,也不是类的成员。因此,构造方法不能直接调用,只能由new 操作符调用。
构造方法对于类是十分重要的,对象的初始化任务要靠构造方法来完成。重载构造方法的目的是提供多种初始化对象的能力,使程序员可以根据实际需要选用合适的构造方法来初始化对象。
1) 编写程序KY5_2.java,将其中的类RunDemo的构造方法进行重载。源代码如下。
public class KY5_2 { public static void main(String[] args) { RunDemo r1=new RunDemo("刘新宇"); r1.check(); RunDemo r2=new RunDemo(null, "654321"); r2.check(); RunDemo r3=new RunDemo("张驰","123456"); r3.check(); } } class RunDemo { private String userName, password; RunDemo(String name) { userName=name; } RunDemo(String name, String pwd) { this(name); password=pwd; } void check() { //检验用户名和密码 String s=null; if (userName!=null) s="用户名:"+userName; else s="用户名不能为空!"; if (password!="123456") s=s+" 口令无效!"; else s=s+" 口令:******"; System.out.println(s); } }
2) 编译程序KY5_2.java并运行程序
3) 将程序的输出结果记录在实验报告中。
程序的输出结果:
用户名:刘新宇口令无效!
用户名不能为空!口令无效!
用户名:张驰口令:******
4) 指出程序中的下面三条语句分别调用了类RunDemo中的哪个构造方法?
I. new RunDemo("刘新宇"); 调用RunDemo(String name)方法
II. new RunDemo(null,"654321"); 调用RunDemo(String name, Stringpwd)方法
III. new RunDemo("张驰","12345678"); 调用RunDemo(String name, String pwd)方法
5) 类RunDemo中有两个构造方法,其中第一个构造方法RunDemo(String) 只有一个参数,用来对成员变量userName 赋初值。第二个构造方法RunDemo(String, String) 有两个参数,并有更多的内容,首先调用this(name),其实际作用就是调用当前类的构造方法RunDemo(String name);然后对成员变量password 赋值;最后调用check 方法来检查userName 和password,类似于一般程序的口令验证。重载构造方法的执行由对象根据实际参数的个数、类型和顺序确定。