本文目錄一覽:
JAVA構造方法
構造方法的方法名必須與類名一樣。
構造方法沒有返回類型,也不能定義為void,在方法名前面不聲明方法類型。
構造方法不能作用是完成對象的初始化工作,他能夠把定義對象時的參數傳遞給對象的域。
構造方法不能由編程人員調用,而要系統調用。
構造方法可以重載,以參數的個數,類型,或排序順序區分。
例子:
1;單個構造函數方法;’
2;多個構造函數方法
(例子為;帶參數與不帶參數)
3;關於繼承類的構造方法的調用;
先看事例;
java類的構造方法是什麼?
構造方法和實例方法的區別
一、主要的區別在於三個方面:修飾符、返回值、命名
1、和實例方法一樣,構造器可以有任何訪問的修飾符,public、private、protected或者沒有修飾符 ,都可以對構造方法進行修飾。不同於實例方法的是構造方法不能有任何非訪問性質的修飾符修飾,例如static、final、synchronized、abstract等都不能修飾構造方法。
解釋:構造方法用於初始化一個實例對象,所以static修飾是沒有任何意義的;多個線程不會同時創建內存地址相同的同一個對象,所以synchronized修飾沒有意義;
構造方法不能被子類繼承,所以final和abstract修飾沒有意義。
2、返回類型是非常重要的,實例方法可以返回任何類型的值或者是無返回值(void),而構造方法是沒有返回類型的,void也不行。
3、至於命名就是構造方法與類名相同,當然了實例方法也可以與類名相同,但是習慣上我們為實例方法命名的時候通常是小寫的,另一方面也是與構造方法區分開。
而構造方法與類名相同,所以首字母一般大寫。
下面看幾個例子熟悉一下:
public class Sample {
private int x;
public Sample() { // 不帶參數的構造方法
this(1);
}
public Sample(int x) { //帶參數的構造方法
this.x=x;
}
public int Sample(int x) { //不是構造方法
return x++;
}
}
上面的例子即使不通過注釋我們也很容易能區分開的,再看下面一個例子
public class Mystery {
private String s;
public void Mystery() { //不是構造方法
s = “constructor”;
}
void go() {
System.out.println(s);
}
public static void main(String[] args) {
Mystery m = new Mystery();
m.go();
}
}
程序執行的結果為null,雖然說Mystery m = new Mystery();調用了Mystery 類的構造方法,但是public void Mystery()並不是構造方法,他只是一個普通的實例方法而已,那該類的構造方法哪去了呢?
二、說到這就得說一下java的默認構造方法
我們知道,java語言中規定每個類至少要有一個構造方法,為了保證這一點,當用戶沒有給java類定義明確的構造方法的時候,java為我們提供了一個默認的構造方法,這個構造方法沒有參數,修飾符是public並且方法體為空。如果用戶有定義構造方法,就不會有默認構造方法!!!
其實默認的構造方法還分為兩種,一種就是剛剛說過的隱藏的構造方法,另一種就是顯示定義的默認構造方法.
如果一個類中定義了一個或者多個構造方法,並且每一個構造方法都是帶有參數形式的,那麼這個類就沒有默認的構造方法,看下面的例子。
public class Sample1{}
public class Sample2{
public Sample2(int a){System.out.println(“My Constructor”);}
}
public class Sample3{
public Sample3(){System.out.println(“My Default Constructor”);}
}
上面的三個類中Sample1有一個隱式的默認構造方法,下列語句Sample1 s1=new Sample()合法;
Sample2沒有默認的構造方法,下列語句Sample2 s2=new Sample2()不合法,執行會編譯錯誤
Sample3有一個顯示的默認構造方法,所以以下語句Sample3 s3=new Sample3();合法。
java中的構造方法的詳細解釋!!
如果想找構造方法的詳細說明,可以看百科或者是書籍,,這裡我按照我的理解說明一下構造方法(以Java語言為例 其他語言類似):
構造方法是類裡面特殊的一種方法,這個方法會在創建這個類的對象的時候執行,用於初始化一部分內容.比如 一個日記,在默認情況下記錄的時間應該是當天,那麼你就可以寫這樣的類
class Note{
Date date;
public Note(){
this.date = new Date(); //new Date表示當天的日期
}
}
這個含義就是你每次建立一個日記,這個日記的日期就會自動設置為當天.
構造函數可以有參數 比如
class Note{
public Note(Date date){}
} 這個類裡面的構造函數有參數 那麼創建對象的時候要用 new Note(date) date是一個日期,創建對象的時候括號里寫什麼參數,那麼這個對象創建的時候就會用與之相匹配的構造函數進行初始化.
每一個類都會至少有一個構造函數,你不寫類裡面也會有一個默認的構造函數,你自己寫構造函數,那麼類裡面就沒有默認構造函數了,這一點很重要,比如:
class Note{
} 這個類裡面沒有寫構造函數,他會有一個默認的構造函數. 創建對象的時候用 new Note() 沒錯.
class Note{
public Note(Date date){}
} 這個類裡面自己寫了一個構造函數,那麼默認的構造函數不存在,創建對象要用 new Note(date),而new Note() 這個就是錯的,因為類中沒有 public Note()這樣的函數.
構造函數的繼承:
子類在調用構造函數之前要先調用父類的構造函數.
比如
class Parent{
public Parent(){
System.out.println(“父類調用”);
}
}
class Child extends Parent{
public Child(){
System.out.println(“子類調用”);
}
}
這時候你創建Child對象的時候 就會先輸出 “父類調用”,然後輸出 “子類調用”
另外子類構造函數中可以顯示的執行父類的構造函數 比如 public Child(){ super(); } 也可以選擇父類的某一個構造函數 比如 public Child(){ super(date)} 這就相當於調用父類的 public Parent(Date date) 這個構造函數. 這裡要注意:如果想在子類中顯示調用父類的構造函數,那麼 super這句話一定要在子類構造函數的第一行.
以上就是我學習中總結出的關於構造函數的用法,希望對你有幫助.
什麼是JAVA中的構造方法?
構造方法是一種特殊的方法,與一般的方法不同是:
1.構造方法的名字必須與定義他的類名完全相同,沒有返回類型,甚至連void也沒有。
2.構造方法的調用是在創建一個對象時使用new操作進行的。構造方法的作用是初始化對象。
3.不能被static、final、synchronized、abstract和native修飾。構造方法不能被子類繼承。
class
RectConstructor{
double
length;
double
width;
double
area(){
return
length*width;
}
//下面這個方法就是所謂的構造方法,沒有返回值,方法名與類名相同~~~
RectConstructor(double
width,double
length){//帶參數的構造方法
this.length=length;
this.width=width;
}
}
其實構造方法就是為了給類中成員賦初值~~~~~~~~~~~~~
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/237509.html