① JAVA 什麼是構造方法
我來幫樓主下吧
先說一下語法。
構造函數,分為有參和無參
public class Student{
private String name;
private String password;
//無參
public Student(){
}
//有參
public Student(String name){
this.name=name;
}
}
為什麼要有構造函數???
我先提一點。就是在我們沒建構造函數的時候,會調用系統默認的無參構造函數。
構造函數的優點。
1.減少代碼量。
2。減少錯誤匹配,增加限制
分別說上面兩點
1.比如你如果沒有構造函數,
需要
Student stu=new Student();
stu.setName("name");
stu.setPasswrod("01028");
相比
Student stu=new Student("name","010268");
哪個簡單的?一比就出來了。特別是多個參數的時候
第2點。
比如我現在去掉無參的構造函數。
我的需求是沒個學生創建對象的時候要有名字和密碼。
Student stu=Student();//這個編譯不過去。報錯。
Student stu=Student("name","01026891");
是從嚴謹和安全的角度
補充。構造函數一般有很多的重載方法。方便用戶使用。
再補充一點。如果你有手寫構造函數,系統的無參構造函數將失效
② java中什麼是構造方法
構造方法,就是java類實例化的時候調用的類裡面的一個方法來構造這個定義的實體。
在類中有不同的構造方法,通過傳入參數來區分,選擇不用構造方法來實例化這個實體
③ JAVA里什麼叫構造方法
構造方法的名稱和類名相同。 比如有一個類Student
public class Student{
//下面這個方法就是他的一種構造方法,構造方法只有在new對象時才用到。有了下面這個構造方法後,就可以這么 new一個對象了 Student s = new Student();如果沒有下面的構造方法,是不能這么new對象的。
public Student(){
}
}
④ java中什麼是構造方法及其作用
無意中翻到這條提問,看了很多回答,發現歧義較重,在這里解答一下,為了避免後邊來的朋友們踩雷
新手學習Java在構造方法這里很容易踩雷,構造方法是用來初始化的,這句勉強沒錯,可構造方法是用來創建對象的,這句就錯了,實際上,在構造方法執行之前,類的內存空間已經開辟完成了,意思就是說對象已經創建了,這步是由new關鍵字來完成的,而構造方法的作用是給類中的變數進行初始化賦值
假設,假設構造方法是用來創建對象用的,就無法解釋抽象類中為什麼允許構造方法的存在,抽象類無法實例化,不能被創建,但是抽象類中允許構造方法的存在,舉例從側面證明一下:
abstract class Animal{
String name;
public Animal() {
System.out.println("抽象父類的無參構造");
}
abstract void eat();
}
class Dog extends Animal{
public Dog() {
super();
System.out.println("子類的無參構造");
}
@Override
void eat(){
}
}
public class Test {
public static void main(String[] args) {
Dog d = new Dog();
System.out.println(d.name);
}
}
隨手敲的很簡陋的一段代碼,不要在意格式上的不嚴謹,領會精神,這段代碼執行後的結果為:
抽象父類的無參構造
子類的無參構造
null
當執行Dog d = new Dog()這句代碼時,大致會分兩步,一是載入類,開辟類的內存空間,這是由new完成的,第二步執行構造方法,為類中的變數初始化賦值,在執行Dog的無參構造時,系統會默認調用父類的無參構造,也就是super(),super關鍵字是對該類的父類進行的引用,它並不是一個對象,這也是個難點,感興趣的可以去查一下,而super()這句代碼可以簡單理解為調用這個類的父類的無參構造
在上述代碼中,父類Animal是一個抽象類,而抽象類不可被實例化,如果構造方法的作用是創建對象,在這一步上邏輯就無法自洽,而實際情況是:抽象類執行了構造方法,但卻沒有創建對象,同時成員變數name也有了初始值null
⑤ 什麼是構造方法什麼是重載
構造方法 構造方法是一種特殊的方法,與一般的方法不同是:
1.構造方法的名字必須與定義他的類名完全相同,沒有返回類型,甚至連void也沒有。
2.構造方法的調用是在創建一個對象時使用new操作進行的。構造方法的作用是初始化對象。
3.不能被static、final、synchronized、abstract和native修飾。構造方法不能被子類繼承。
構造方法可以被重載。沒有參數的構造方法稱為默認構造方法,與一般的方法一樣,構造方法可以進行任何活動,但是經常將他設計為進行各種初始化活動,比如初始化對象的屬性。
在Java中,任何變數在被使用前都必須先設置初值.Java提供了為類的成員變數賦初值的專門功能:構造方法(constructor)構造方法是一種特殊的成員方法,它的特殊性反映在如下幾個方面:
(1)構造方法名與類名相同.
(2)構造方法不返回任何值,也沒有返回類型.
(3)每個類可以有零個或多個構造方法.
(4)構造方法在創建對象時自動執行,一般不能顯式地直接調用.
具體使用:分別計算長、寬為20、10和6、3的兩個長方形的面積。
class RectConstructor{
double length;
double width;
double area(){
return length*width;
}
RectConstructor(double width,double length){//帶參數的構造方法
this.length=length;
this.width=width;
}
}
public class RectDemo{
public static void main(String args[]) {
RectConstructor rect1=new RectConstructor(10,20);
RectConstructor rect2=new RectConstructor(3,6);
double ar;
ar=rect1.area();
System.out.println("第一個長方形的面積是"+ar);
ar=rect2.area();
System.out.println("第二個長方形的面積是"+ar);
}
}
重載 重載是不是多態?
re:
重載還是一種是多態吧,有四種形式的多態
1.虛函數多態
2模板多態
3重載
4轉換
所謂的動態和靜態區分是另一種基於綁定時間的多態分類,嚴格來說,重載是編譯時多態,即靜態多態,根據不同類型函數編譯時會產生不同的名字如int_foo和char_foo等等,以此來區別調用。故重載仍符合多態定義——通過單一標識支持不同特定行為的能力,只是重載屬於靜態多態,而不是通過繼承和虛函數實現的動態多態。
⑥ 構造方法是什麼意思
你可以理解成 onCreate 事件處理函數。
⑦ java中什麼是構造方法,什麼是成員方法怎麼區分的
構造方法:沒有返回值(連void也沒有),與類名同名
成員方法:必須有返回值,空返回就是void
⑧ 什麼是構造方法構造方法和普通方法有什麼區別
1樓在胡說吧?創建類會調構造方法?構造方法實在new對象的時候被調用的,是被系統自動調用的,而且一定會被調用,構造方法一般用來給對象的屬性做初始化的,構造方法沒有返回值,普通方法必須有返回值,就算不返回也得寫個
void,這就是他們的區別