1. 程式人生 > >構造函數

構造函數

data 分享 對象創建 調用次數 類型 不同 沒有 blog 值類型

1、概述

構造函數:構建創造對象時調用的函數。 作用:可以給對象進行初始化。創建對象都必須要通過構造函數初始化。

2、特點

a、函數名與類名相同
b、不定義返回值類型
c、沒有具體的返回值

3、類別

構造函數可以有多個,用於對不同的對象進行針對性的初始化.
多個構造函數在類中是以重載的形式來體現的。 無參構造函數(默認構造函數)
帶參構造函數
一個類中如果沒有定義過構造函數,那麽該類中會有一個默認的空參數構造函數。 如果在類中定義了指定的構造函數,那麽類中的默認構造函數就沒有了。
 1     Person()//構造函數,而且是空參數的。
2 { 3 name = "baby"; 4 age = 1; 5 System.out.println("person run"); 6 } 7 8 Person(String n) 9 { 10 name = n; 11 } 12 13 Person(String n,int a) 14 { 15 name = n; 16 age = a; 17 }

4、一般函數和構造函數的區別

a、調用時機
構造函數:對象創建時,就會調用與之對應的構造函數,對對象進行初始化。 一般函數:對象創建後,需要函數功能時才調用。 b、調用次數
構造函數:對象創建時,會調用只調用一次。 一般函數:對象創建後,可以被調用多次

5、構造函數內存圖解

 1 class Person{
 2     private String name;
 3     private int age;
 4     Person(String n,int a){
 5         name = n;
 6         age = a;
 7     }
 8     public
void speak(){ 9 System.out.println(name+":"+age); 10 } 11 } 12 13 class ConsDemo{ 14 public static void main(String[] args){ 15 Person p2 = new Person("小強",10); 16 p2.speak(); 17 } 18 }

a、main函數進棧,創建p2對象,在棧內存中創建p2變量,在堆內存中創建對象,對name和age默認初始化 技術分享 b、調用構造函數Person(String n,int a),構造函數進棧,將傳遞的參數值賦給n和a,n和a再將值賦給堆中的name和age 技術分享

c、構造函數執行完畢,彈棧,此時對象初始化完畢,再將地址值賦給變量p2,p2指向堆中對象 技術分享

d、p2.speak(),speak()方法進棧,執行,完畢後彈棧 技術分享

6、註意事項

a、構造函數如果完成了set功能。set方法是否需要?需要,構造函數的賦值是在創建對象時進行,且一次,而set可以多次調用。
1      Person(String n)
2     {
3     name = n;
4     }
5     public void setName(String n)
6     {
7     name = n;
8     }

b,一般函數不能直接調用構造函數。 c,構造函數如果前面加了void就變成了一般函數。 d,構造函數中是有return語句的。

構造函數