Java构造函数重载

Java么有C++的参数默认值的机制,要用重载,请看下面的对比

//C++参数默认值机制
#include <iostream>
using namespace std;
class testDefaultParam {
public:
    testDefaultParam (int a, int b = 2){
        cout << a * b << endl;
    }
    void test(int a = 1234){
        cout << a << endl;
    }
    virtual ~testDefaultParam (){}

private:
    /* data */
};
int main(int argc, const char *argv[])
{
    testDefaultParam t1(3);
    testDefaultParam t2(3, 3);
    cout << "---------------\n";
    t1.test(4321);
    t1.test();
    return 0;
}
/*
输出:
6
9
---------------
4321
1234
*/

Java版本:用重载实现类似参数默认的机制

public class Test {
    Test(String s1, String s2){
        System.out.println(s1 + "\t" + s2);
    }
    public Test(String s) {
        this(s, "default string");//调用已经写好的构造函数,与普通重载不同,要用this
    }
    public void print(int a) {
        System.out.println(a);
    }
    public void print() {
        print(1234);
    }
    //这两个print方法等价于C++中的print(a = 1234);
    public static void main(String[] args) {
        Test t1 = new Test("test", "s2");
        Test t2 = new Test("test");
        System.out.println("--------------------");
        t1.print();
        t1.print(4321);
    }
}
/*
输出:
test    s2
test    default string
--------------------
1234
4321
*/

ps:

eclipse确实很不错,会自动提示错误,可以告诉你的尝试是不是正确——这个this的用法就是试出来的(当然,书上肯定是有的,Java标准里肯定是有的)

而且,eclipse的自动提示功能丝毫不逊色于visual studio的visual assistant(应该说是更强大),只要配置自动提示(免去按Alt+/的烦恼),方法是:

从Window -> preferences -> Java -> Editor -> Content assist -> Auto-Activation
在.后面添加abcdefghijklmnopqrstuvwxyz

再谈谈Vim,即使有了Vim的snipmate,也感觉写代码更累一点(当然,比没有要好多了),也许我还是入门玩家,或者还有些没发现的插件,如果你知道,赶紧告诉我吧^_^

 

posted @ 2012-12-27 12:02  ttang  阅读(11068)  评论(0编辑  收藏  举报