java類的構造方法
㈠ java的構造方法
java的構造函數其實很簡單。一個類 被實例化 也就是被new的時候 最先執行的是 構造函數,如果有留心。會發現很多類裡面根本沒有寫構造函數。在java類中,如果不顯示聲明構造函數,JVM 會給該類一個默認的構造函數。一個類可以有多個構造函數。構造函數的主要作用 一是用來實例化該類。二是 讓該類實例化的時候執行哪些方法,初始化哪些屬性。當一個類聲明了構造函數以後,JVM 是不會再給該類分配默認的構造函數。
㈡ 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;
}
}
其實構造方法就是為了給類中成員賦初值~~~~~~~~~~~~~
㈢ IT培訓分享JAVA 構造方法 靜態方法
構造方法
作用: 對 對象的屬性(成員變數)進行初始化
寫法:
1.構造方法的方法名與類名完全相同
2.沒有返回值類型(連void都不寫)
3.沒有返回值
注意事項:
1.沒寫構造方法
系統則會提供一個無參的構造方法
2.寫了有參的構造方法
系統不會提供無參的構造方法
所以在 寫有參的構造方法時 最好把無參的也寫上
內存表現步驟
1.類載入到方法區
2.載入到方法區的同時。IT培訓http://www.kmbdqn.com/認為靜態變數被載入到方法區的靜態區
3.main入棧
4.在堆內存中創建 對象
5.把地址賦值給main函數的 對象保存
6.main函數出棧
7.程序結束
靜態變數與成員變數的區別:
1.所屬不同:
成員變數: 屬於對象的 又叫對象變數(實例變數)
靜態變數:屬於類 又叫類變數
2.內存中的存儲位置:
成員變數: 存儲在堆內存
靜態變數: 存處在方法區的靜態區
3.載入到內存中的時機(生命周期的不同):
成員變數: 隨著對象的創建而創建
靜態變數: 隨著類的載入而存在
㈣ java中的構造方法
構造方法作用就是對類進行初始化。
如果你沒有定議任何構造方法的形式,程式會為你取一個不帶任何參數的構造函數,那麼你產生類的對像時只能用不帶參數的方法,如:class
a
{}//沒有任何構造函數。
構造方法就是與類同名的那個方法,它的作用是可以用來初始化,例子如下class
Person
//人類{public
Person(String
n,int
a)
//構造方法
{ name
=
n;
age
=
a;} private
string
name; private
int
age;}static
void
main(String[]
args){Person
p
=
new
Person("張三",14);//這就是作用}new一個對象的時候要用到構造函數,例如Hello
hello
=
new
Hello();這時調用的是Hello的無參數構造方法;Hello
hello
=
new
Hello("hi");這個是調用Hello有參數構造方法,在JAVA中如果不寫構造方法的話,會默認加上一個無參數的構造方法,但是如果已經有了一個有參數的構造方法,那麼無參數的構造方法就不會默認被加上.如果Hello類中已經有了一個有參數的構造方法,這時再使用
Hello
hello
=
new
Hello();來創建對象的時候就會出錯,這就是為什麼書上要強調寫了有參數的構造方法就最好加一個無參數的構造方法.
㈤ java構造方法
java構造方法也就是java構造函數,方法舉例如下圖:
java構造函數一般用來初始化成員屬性和成員方法的,即new對象產生後,就調用了對象了屬性和方法。
在現實生活中,很多事物一出現,就天生具有某些屬性和行為。比如人一出生,就有年齡、身高、體重、就會哭;汽車一出產,就有顏色、有外觀、可以運行等。這些,我們就可以將這些天然的屬性和行為定義在構造函數中,當new實例化對象時,也就具有這些屬性和方法了,沒必要再去重新定義了,從而加快了編程效率。
(5)java類的構造方法擴展閱讀:
java構造函數的特點:
1、函數名與類名相同
2、不用定義返回值類型。(不同於void類型返回值,void是沒有具體返回值類型;構造函數是連類型都沒有)
3、不可以寫return語句。(返回值類型都沒有,也就不需要return語句了)
㈥ JAVA構造方法
構造方法的方法名必須與類名一樣。
構造方法沒有返回類型,也不能定義為void,在方法名前面不聲明方法類型。
構造方法不能作用是完成對象的初始化工作,他能夠把定義對象時的參數傳遞給對象的域。
構造方法不能由編程人員調用,而要系統調用。
構造方法可以重載,以參數的個數,類型,或排序順序區分。
例子:
1;單個構造函數方法;』
㈦ JAVA 中 類的構造方法和成員方法 到底有什麼不同,分別起什麼作用,麻煩解釋清楚點,謝謝
不同:構造方法是初始化一個類的對象時候調用的,它沒有返回值,而且名字必須與類的名字一樣,而成員方法是由類對象主動調用的,使用點操作符,它有返回值
構造方法: 類名(參數列表){}
一般寫在成員變數的下面,沒有返回類型,沒有返回值是格式。
作用是:通過關鍵字new,創建類的一個實例,並初始化對象(比如初始化成員變數,就是在這個對象的准備工作)
調用: 類名 對象名 = new 構造方法(參數列表);成員方法: 返回類型 方法名(參數類表){}
是從現實中抽象出來的類的行為,也就是一個方法
作用:當需要時,執行某種用途或功能,可以返回一個值,或對象。
調用: 對象名.方法名(參數列表);
㈧ 什麼叫做JAVA的構造方法(含義)
在Java中,每個類都需要至少一個的構造方法(可以有多個),它用於構造類的對象;在Java中構造方法必須與類名相同;構造方法可以不帶有參數、也可以帶有參數,不帶有參數的構造方法被稱為無參構造(no-arg)方法。
這里大家可能會覺得奇怪,我們之前的MainClass好像就沒有構造方法。其實是這樣的,如果我們不給類提供構造方法,編譯器會自動提供一個無參構造方法。
定義構造方法的語法如下:
Java代碼
constructorName (listOfArguments) {
[constructor body]
}
其中constructorName必須和你定義的類的名字相同,listOfArgumengs是構造方法的參數列表,當然,這里也可以不帶有任何參數。然後大括弧內是我們的方法體。這里提一下,構造方法也可以帶有訪問控制符,即public、protected、private和default(忽略情況下)。
下面的例子給出了一個構造方法的實例:
Java代碼
public class MainClass {
double radius;
// Class constructor
MainClass(double theRadius) {
radius = theRadius;
}
}
可以看出,我們給MainClass定義了一個構造方法,它的修飾符是默認的。後面的教程大家會學到這幾個訪問控制符的作用。我們的MainClass的構造方法帶有一個double參數,這里大家也可以看出,構造方法的參數可以用於初始化類的屬性,其實強制要求帶參數的構造方法可以保持類的狀態的完整性,即保證構造出的對象是符合要求的。
默認構造方法
前面我講過,如果沒有提供構造方法,編譯器會提供一個默認的構造方法(沒有參數)。這里其實也隱含著一個意思,即,如果我們提供了構造方法,那麼編譯器是不會提供默認的構造方法的。我們可以通過下面的代碼來驗證。
Java代碼
public class MainClass {
double radius;
// Class constructor
MainClass(double theRadius) {
radius = theRadius;
}
public static void main(String[] args) {
MainClass mc = new MainClass();
}
}
大家可以嘗試編譯上面的代碼,可以發現編譯會出錯,提示的錯誤信息為:
Java代碼
The constructor MainClass() is undefined
這個信息的意思是構造方法MainClass()沒有定義,即編譯器沒有給我們提供默認的構造方法。那麼如果我們還想繼續使用無參的構造方法的話,這就需要我們自己來提供了,如:
Java代碼
public class MainClass {
double radius;
MainClass() {
}
// Class constructor
MainClass(double theRadius) {
radius = theRadius;
}
}
上面的代碼我們自己手動的提供了一個無參的構造方法MainClass(),大家現在嘗試編譯代碼,會發現,代碼是可以通過編譯的。所以在自己實際的工作中,稍微注意這點。
多個構造方法
其實我們前面已經見過多構造方法的例子了,不過這里給大家提示下,Java支持一個類中定義多個構造方法,如:
Java代碼
class Sphere {
int radius = 0;
Sphere() {
radius = 1;
}
Sphere(int radius) {
this.radius = radius;
}
}
這里我們定義了球(Sphere)類,然後定義了它的半徑並提供了兩個構造方法。在默認的構造方法里,我們將半徑設置為1,然後在帶有半徑作為參數的構造方法中,我們設置了半徑為提供的值。
在一個構造方法中調用另一個方法
我們一直稱呼構造方法,那麼既然是方法,當然支持方法的調用。在Java中,我們可以從一個構造方法中調用另一個構造方法。要調用另一個方法,只要使用this關鍵字,然後後面跟著括弧,如果要調用的構造方法中帶有參數,只要將參數放到對應的位置即可。如:
Java代碼
class Sphere {
int radius = 0;
double xCenter;
double yCenter;
double zCenter;
Sphere() {
radius = 1;
}
Sphere(double x, double y, double z) {
this();
xCenter = x;
yCenter = y;
zCenter = z;
}
Sphere(int theRadius, double x, double y, double z) {
this(x, y, z);
radius = theRadius;
}
}
在使用這種方式的時候,稍微注意下,不要引起循環調用。在出現循環調用的時候,編譯器會出現類似於如下的提示來阻止類編譯通過:
Java代碼
Recursive constructor invocation MainClass(int)
它的意思是遞歸的構造方法調用,大家遇到這個問題的時候,稍微檢查下自己的代碼,看看構造方法是否出現遞歸調用了。
㈨ java中什麼是構造方法及其作用
java中構造方法的含義:一個與當前類同名的方法成為構造方法。
(為了方便你的理解,我這里再說下構造方法的特點:1、與當前類同名;2、沒有返回值;3、其中不能使用return語句返回任何值;4、一旦自定義構造方法後,系統將不再自動生成無參數的構造方法;5、其中不能加void定義類型,它的無返回值與void不同,若用void定義類型,則系統不會將其認定為構造方法,即不會再需要時自動調用)
構造方法的作用:在類的實例對象剛產生時,該類中的構造方法將會被自動調用,我們可以再該構造方法中加入需要完成初始化工作的代碼。