共同點: 都是實例化對象,初始化數據的 默認構造是說所有的類都從祖先object那繼承了空參的構造方法,你不寫與寫空參構造都存在,而有參數的構造一般是自己寫的,寫就有不寫就沒有,它的作用和空參的一樣,只是它里面可以有參數,給你個例子來說明吧 有一個類Monitor它有屬性String height;String width public Monitor(){} public Monitor(String height,String width){} 有一個空參的一個有參的構造的方法 在main方法里我做初始化動作 Monitor monitor=new Monitor(); 這個構造只是把顯示器這個對象創造出來了,它的屬性就沒有值,也可以再手動給它賦上值 如:monitor.height=100; monitor.width=200; 用有參的就不一樣了,少很多事 Monitor monitor2=new Monitor("100","200"); 在這里我只要把想放進去的參數直接放進去就能給我的屬性賦上值,是不是省了很多事? 這就是它的優勢! 回答完結!
構造函數 是一種特殊的方法 主要用來在創建對象時初始化對象 即為對象成員變量賦初始值 總與new運算符一起使用在創建對象的語句中 特別的一個類可以有多個構造函數 可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載 構造函數與其他方法的區別 1.構造函數的命名必須和類名完全相同;而一般方法則不能和類名相同. 2.構造函數的功能主要用於在類的對象創建時定義初始化的狀態.它沒有返回值,也不能用void來修飾.這就保證了它不僅什么也不用自動返回,而且根本不能有任何選擇.而其他方法都有返回值.即使是void返回值,盡管方法體本身不會自動返回什么,但仍然可以讓它返回一些東西,而這些東西可能是不安全的. 3.構造函數不能被直接調用,必須通過new運算符在創建對象時才會自動調用,一般方法在程序執行到它的時候被調用. 4.當定義一個類的時候,通常情況下都會顯示該類的構造函數,並在函數中指定初始化的工作也可省略不去Java編譯器會提供一個默認的構造函數.此默認構造函數是不帶參數的.而一般方法不存在這一特點
簡單的來說構造函數就是用來創建對象用的,說的專業些叫實例化對象。 定義: class A { public A(){} } 使用: A a=new A();//在這里,A()就是就是構造函數。 需要注意的一點是,如果類里面沒有定義構造函數,編譯器也會自動生產一個空構造函數,類的各個成員都賦上默認值。 但是如果在類里面只定義了一個私有的構造函數的時候,那么這個類將不能被實例化。 class A { string a; private A() { }//這個類不能被實例化 } 如果我們定義了帶參數的構造函數,而沒有定義不帶參數的構造函數,那么在實例化這個類的對象的時候必須提供參數。 class A { string a; public A(string str) {a=str; } } 不能這么實例化對象 A a=new A();
構造函數分為動態構造函數和靜態構造函數。 動態構造函數是類或結構實例化時,為其分配內存空間,完成類或結構當中成員變量的初始化工作。動態構造函數可以重載,即相同構造函數名稱擁有不同類型和數目的多個構造函數。帶參數的構造函數和不帶參數的構造函數沒有本質區別,帶參數的構造函數可以通過傳入的變量控制或者直接初始化其中的成員變量,在構造函數中可以為成員變量初始化默認值。 靜態構造函數不允許攜帶參數,即一個類中只允許有一個靜態構造函數。它在第一次訪問靜態成員或者第一次實例化動態該類的對象之前調用。