java的构造特点_JAVA学习第八课(构造函数及其特点)
構(gòu)造函數(shù):
構(gòu)造函數(shù),就是在構(gòu)建 創(chuàng)造對象 時所調(diào)用的函數(shù),作用就是給對象進行初始化
特點:
1.函數(shù)名和類名相同
2.不需要定義返回值類型
3.沒有具體的返回值
作用:給對象進行初始化
注意:
1.默認(rèn)構(gòu)造函數(shù)的特點
2.多個構(gòu)造函數(shù)是以重載的形式存在的
代碼演示:
class man
{
private int age;
private String name;
man()//定義一個man類的構(gòu)造函數(shù)
{
System.out.println("sun");
}
public void fun()
{
System.out.println(name+" "+age);
}
}
public class Main
{
public static void main(String[] args)
{
man jo = new man();
}
}
打印 sun、
PS:一個類中如果沒有定義過構(gòu)造函數(shù),那么該類中會有一個默認(rèn)的空參數(shù)構(gòu)造函數(shù)
如果在類中定義了指定的構(gòu)造函數(shù),那么類中的默認(rèn)構(gòu)造函數(shù)就沒有了
特別注意:如果定義了有參的構(gòu)造函數(shù),那么默認(rèn)構(gòu)造函數(shù)的形式也構(gòu)造,編譯器不再自動生成
實際上:默認(rèn)的空參數(shù)函數(shù)是:man(){}
比如一個類:
class test
{
}
什么也沒有,但是實際上里面有一個test(){},編譯器編譯時會先判斷有沒有寫構(gòu)造函數(shù),沒有自動添加,有就刪除默認(rèn)的構(gòu)造函數(shù)
構(gòu)造函數(shù),是在一創(chuàng)建對象的同時被調(diào)用了
一般函數(shù)和構(gòu)造函數(shù)的區(qū)別:
1.構(gòu)造函數(shù):對象創(chuàng)建時,就會調(diào)用與之對應(yīng)的構(gòu)造函數(shù),并對該對象進行初始化
一般函數(shù): 創(chuàng)建對象后,需要進行函數(shù)的調(diào)用的時候才會被調(diào)用
2.構(gòu)造函數(shù),對象創(chuàng)建時,只調(diào)用一次
一般函數(shù):對象創(chuàng)建后,想調(diào)用幾次就調(diào)用幾次
什么時候使用構(gòu)造函數(shù)?
在描述某一事物時,該事物存在一些內(nèi)容,這些內(nèi)容都定義在構(gòu)造函數(shù)里。
如:對象一創(chuàng)建,就有一個默認(rèn)的年齡、姓名
示例代碼:
class man
{
private int age;
private String name;
man()//定義一個man類的構(gòu)造函數(shù)
{
age = 20;
name = "john";
}
public void fun()
{
System.out.println(name+" "+age);
}
}
public class Main
{
public static void main(String[] args)
{
man jo = new man();
jo.fun();
}
}構(gòu)造函數(shù)的重載:
class man
{
private int age;
private String name;
man()//定義一個man類的構(gòu)造函數(shù)--------------- |
{ |
age = 20; |
name = "john"; |
} |
//對象在創(chuàng)建前就有年齡,名字 |
|
man (int a,String s) |-------->重載
{ |
age = a; |
name =s; |
} |
man (String s) |
{ |
name =s; |
} ---------------|
public void fun()
{
System.out.println(name+" "+age);
}
}
public class Main
{
public static void main(String[] args)
{
man jo = new man();
jo.fun();
man jj = new man(1,"BLF");
jj.fun();
man jjj = new man("BLF2");
jj.fun();//打印BLF 0
}
}
PS:一個類中出現(xiàn)同名的函數(shù)名,必須要用的重載。
一個對象創(chuàng)建時如果沒有調(diào)用構(gòu)造函數(shù),就意味著創(chuàng)建失敗。
構(gòu)造函數(shù)的內(nèi)存分配圖(如下圖):對象要進堆,函數(shù)要進棧
構(gòu)造函數(shù)細(xì)節(jié):
構(gòu)造函數(shù),為了方便日后修改信息,所以要加set
構(gòu)造函數(shù)的名前,不可加void等,加了之后就不是構(gòu)造函數(shù),而變成一般函數(shù)了(構(gòu)造函數(shù)的特點2)
錯誤代碼示例
class man
{
private int age;
private String name;
man(int a)
{
age = a;
}
//對象在創(chuàng)建前就有年齡,名字
man (int a,String s)
{
age = a;
name =s;
fun();
}
public void set(String s)
{
name = s;
}
public void fun()
{
System.out.println(name+" "+age);
}
}
public class Main
{
public static void main(String[] args)
{
man jo = new man();
jo.set("BLF2");
jo.fun();
}
}
這段代碼的問題在于:
因為沒有定義構(gòu)造函數(shù)。
默認(rèn)的構(gòu)造函數(shù)是代碼沒有創(chuàng)建構(gòu)造函數(shù)時自動添加,但是上述代碼有構(gòu)造函數(shù)了,但是沒有man(){}找一個類型的構(gòu)造函數(shù),所以報錯
總結(jié)
以上是生活随笔為你收集整理的java的构造特点_JAVA学习第八课(构造函数及其特点)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: esxi root 密码规则_陌陌风控系
- 下一篇: python移动平均线绘图_对pytho