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,也感覺寫代碼更累一點(當然,比沒有要好多了),也許我還是入門玩家,或者還有些沒發現的插件,如果你知道,趕緊告訴我吧^_^

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM