導航:首頁 > 編程語言 > java構造方法

java構造方法

發布時間:2022-01-16 19:52:00

java 構造方法 函數

java的構造函數其實很簡單。
一個類 被實例化 也就是被new的時候 最先執行的是 構造函數,如果你有留心。你會發現很多類裡面根本沒有寫構造函數。
在java類中,如果不顯示聲明構造函數,JVM 會給該類一個默認的構造函數。一個類 可以有多個構造函數。構造函數的主要作用 一是用來實例化該類。二是 讓該類實例化的時候執行哪些方法,初始化哪些屬性。當一個類聲明了構造函數以後,JVM 是不會再給該類分配默認的構造函數。
比如一個實體類
public class entity{
private int id;
private String userName;
get...set..方法
}
如果這樣寫該類就是默認的構造函數。該類實例化的時候 id 和 username 就是默認值 即 id=0,username=null.
如果在裡面加入這樣一個方法
public entity(int id,String userName){
調用get..set..
}
如果這樣寫 該類實例化的時候 必須給出 id 和username參數。 JVM不會再給這個類默認構造函數
你也可以理解成 在沒有給構造函數的時候 JVM 給你的類加了一個這樣的函數
public entity(){
this.id=0;
this.userName=null;
}
其實構造函數是用來對一個類以及變數進行實例化。

② java構造方法

在類里如果定義一個或多個構造方法,java不提供默認的構造方法,所以要加一個不帶參數的構造方法,可以試著把無參構造方法的刪了,然後從那new一個對象

③ java中構造方法的理解

當你要是用這個類的時候,
a a1 = new a(str); //這就是你要用這個類的時候

分析:
類的初始化實例就是如上所示,這個時候就要了解實例化是實例化什麼了。
實例化是運行這個類的構造函數

當一個類中沒有構造函數的時候,編譯器會默認給這個類加上一個空的構造函數。
如下
public a(){}
。當然,一個類也可以擁有多個構造函數。
如class a{
public a(String b){
System.out.println("abcd"); }
public a(String b,String b1){
System.out.println("abcd"); }}

類似於這樣的。
你選擇實例化哪個,編譯器就編譯哪個!!
以上是構造方法

那麼String b是什麼呢,那就是告訴那個構造函數,。只有String類型的參數 才可以是用這個構造函數。這個構造函數是不可以帶其他類型的,。只能用這個String類型

system.out.println("abcd」);這個只是一個輸出語句。。輸出的結果就是abcd 沒有其他的意思!

還有什麼不懂的 QQ258276264問我,

呵呵

④ 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 什麼是構造方法

我來幫樓主下吧
先說一下語法。
構造函數,分為有參和無參
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類的構造方法是什麼

構造方法和實例方法的區別

一、主要的區別在於三個方面:修飾符、返回值、命名

1、和實例方法一樣,構造器可以有任何訪問的修飾符,public、private、protected或者沒有修飾符 ,都可以對構造方法進行修飾。不同於實例方法的是構造方法不能有任何非訪問性質的修飾符修飾,例如static、final、synchronized、abstract等都不能修飾構造方法。

解釋:構造方法用於初始化一個實例對象,所以static修飾是沒有任何意義的;多個線程不會同時創建內存地址相同的同一個對象,所以synchronized修飾沒有意義;

構造方法不能被子類繼承,所以final和abstract修飾沒有意義。

2、返回類型是非常重要的,實例方法可以返回任何類型的值或者是無返回值(void),而構造方法是沒有返回類型的,void也不行。

3、至於命名就是構造方法與類名相同,當然了實例方法也可以與類名相同,但是習慣上我們為實例方法命名的時候通常是小寫的,另一方面也是與構造方法區分開。

而構造方法與類名相同,所以首字母一般大寫。

下面看幾個例子熟悉一下:

publicclassSample{

privateintx;

publicSample(){//不帶參數的構造方法
this(1);
}

publicSample(intx){//帶參數的構造方法
this.x=x;
}

publicintSample(intx){//不是構造方法
returnx++;
}

}

上面的例子即使不通過注釋我們也很容易能區分開的,再看下面一個例子

publicclassMystery{
privateStrings;

publicvoidMystery(){//不是構造方法
s="constructor";
}

voidgo(){
System.out.println(s);
}

publicstaticvoidmain(String[]args){
Mysterym=newMystery();
m.go();
}
}

程序執行的結果為null,雖然說Mystery m = new Mystery();調用了Mystery 類的構造方法,但是public void Mystery()並不是構造方法,他只是一個普通的實例方法而已,那該類的構造方法哪去了呢?


二、說到這就得說一下java的默認構造方法

我們知道,java語言中規定每個類至少要有一個構造方法,為了保證這一點,當用戶沒有給java類定義明確的構造方法的時候,java為我們提供了一個默認的構造方法,這個構造方法沒有參數,修飾符是public並且方法體為空。如果用戶有定義構造方法,就不會有默認構造方法!!!

其實默認的構造方法還分為兩種,一種就是剛剛說過的隱藏的構造方法,另一種就是顯示定義的默認構造方法.

如果一個類中定義了一個或者多個構造方法,並且每一個構造方法都是帶有參數形式的,那麼這個類就沒有默認的構造方法,看下面的例子。

publicclassSample1{}

publicclassSample2{
publicSample2(inta){System.out.println("MyConstructor");}
}

publicclassSample3{
publicSample3(){System.out.println("MyDefaultConstructor");}
}

上面的三個類中Sample1有一個隱式的默認構造方法,下列語句Sample1 s1=new Sample()合法;

Sample2沒有默認的構造方法,下列語句Sample2 s2=new Sample2()不合法,執行會編譯錯誤

Sample3有一個顯示的默認構造方法,所以以下語句Sample3 s3=new Sample3();合法。

⑧ Java構造方法

package entity;
public class Person {

private String name;
private String sex;
private Integer age;

/**
* 無參數構造方法
*/
public Person() {
}

/**
* 帶參數的構造方法
* @param name
* @param sex
* @param age
*/
public Person(String name, String sex, Integer age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}

/**
* 輸出詳細信息
* @return
*/
public String output() {
return "Person [name=" + getName() + ", sex=" + getSex() + ", age=" + getAge() + "]";
}
/**
* 測試方法
*/
public static void main(String[] args) {
Person person = new Person("網路知道","保密",18);
System.out.println(person.output());
}

}

⑨ Java代碼,構造方法

//Circle類
public class Circle{
double radius=1;
final double PI=3.14;
//無參數構造函數
public Circle(){
this.radius=1;
}
//獲取面積
public double getArea(){
double area;
if(radius>0){
area=PI* Math.pow(radius,2);
}
return area;
}
//獲取周長
public double getPerimeter(){
double perimeter;
if(radius>0){
perimeter=2*PI* radius;
}
return perimeter;
}
}

⑩ 什麼叫做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構造方法相關的資料

熱點內容
編程拖放 瀏覽:40
linux卸載tomcat 瀏覽:875
手機時間如何校正到伺服器 瀏覽:81
創造與魔法瞬移源碼百度 瀏覽:882
反射優化java 瀏覽:874
硬體加密播放盒子 瀏覽:923
xp點擊文件夾選項沒反應 瀏覽:537
蘋果不顯示桌面的app怎麼刪除 瀏覽:864
安卓手機怎麼換國際服 瀏覽:415
神獸領域安卓怎麼下載 瀏覽:250
單片機交通燈ad原理圖 瀏覽:413
多功能解壓磁鐵筆 瀏覽:80
少兒編程火箭升空 瀏覽:401
蘭斯10游戲解壓碼 瀏覽:42
手機proxy伺服器地址 瀏覽:449
吉他清音壓縮 瀏覽:301
簡歷模板程序員 瀏覽:882
螺桿壓縮機虛標型號 瀏覽:953
idea開發項目伺服器ip地址 瀏覽:125
串口伺服器出現亂碼怎麼解決 瀏覽:950