這一節我們來學習一個特殊的函數,那就是構造函數。
那么什么是構造函數呢?
既然是函數,那它應該是被定義在類中,同時有函數名,要明確函數返回的結果和參數類型。
我們這里先看一下**構造函數的特點:**
1.函數名與類名相同;
2.不用定義返回值類型
3.沒有具體的返回值。
從這些特點來說,這確實是一個很特殊的函數哦。
我們來看一個定義構造函數的例子:
~~~
class Person
{
private String name;
private int age;
//定義一個Person類的構造函數
Person()//構造函數,而且是空參數的。
{
System.out.println("person run");
}
public void speak()
{
System.out.println(name+":"+age);
}
}
//測試類
class ConsDemo
{
public static void main(String[] args)
{
Person p = new Person();
}
}
~~~
結果:

結果我們看到了,當我們創建對象是,執行了我們定義的構造方法。
那么我們可以這樣通俗的定義構造函數:
**構造函數:構建創造對象時調用的函數。這樣是不是很好理解了。**
那么我們就可以清楚的知道構造函數的主要作用:
**構造函數的作用:可以給對象進行初始化。**
我們必須清楚,創建的每一個對象都必須要通過構造函數初始化。
那么當我們一個類中沒有構造函數時,為什么我們還是可以創建對象呢?那是因為有默認構造函數。
什么是默認構造函數呢?
**當一個類中如果沒有定義過構造函數,那么該類中會有一個默認的空參數構造函數。**
~~~
class Person(){}//構造函數,而且是空參數的,這其實就是類中的默認構造函數
~~~
但我們更要注意的是:**如果在類中定義了指定的構造函數,那么類中的默認構造函數就沒有了。**
比如說我們定義一個類:
~~~
class Demo{}//一個什么代碼都沒有的類
~~~
我們說這個類中有沒有內容?
答案當然是肯定的,雖然這個類是空的,但是我們可以創建它的對象,也就是說這個類中有一個默認的構造函數:
~~~
class Demo
{
Demo(){}
}
~~~
很顯然,這個類中確實有內容,就是我們說的默認構造函數。
- 前言
- 1.1 基本常識
- 1.2 Java語言概述
- 1.3 Java語言的環境搭建
- 1.4 Java程序開發之初體驗--Hello World
- 2.1 關鍵字
- 2.2 標識符
- 2.3 注釋
- 2.4 常量
- 2.5 進制掃盲
- 2.6 變量和數據類型(1)
- 2.7 變量和數據類型(2)
- 2.8 運算符
- 3.1 if語句
- 3.2 switch語句
- 3.3 while和do-while語句
- 3.4 for語句
- 3.5 for循環的嵌套
- 3.6 break語句與continue語句
- 4.1 函數的定義
- 4.2 定義函數的兩個明確
- 4.3 函數的內存加載過程
- 4.4 函數的重載
- 5.1 數組的定義
- 5.2 數組的內存分配及特點
- 5.3 數組操作中常見問題
- 5.4 數組常用操作(1)
- 5.5 數組常用操作(2)
- 5.6 二維數組
- 6.1 面向對象的概述
- 6.2 類與對象的關系
- 6.3 對象的內存體現
- 6.4 成員變量與局部變量
- 6.5 類類型參數與匿名對象
- 6.6 基本數據類型參數與引用數據類型參數的傳遞過程
- 6.7 封裝
- 7.1 構造函數概述與默認構造函數
- 7.2 構造函數與一般函數的區別
- 7.3 構造函數的重載
- 7.4 構造函數的內存加載
- 7.5 構造函數需要注意的幾個細節
- 7.6 this關鍵字的原理
- 7.7 this關鍵字的細節與應用
- 8.1 static關鍵字之特點
- 8.2 成員變量與靜態變量的區別
- 8.3 static關鍵字使用的注意細節
- 8.4 main函數的解析與細節
- 8.5 static關鍵字的使用場景
- 8.6 靜態的內存加載
- 8.7 靜態代碼塊
- 8.8 構造代碼塊
- 9.1 繼承
- 9.2 單繼承與多重繼承
- 9.3 子父類中成員變量特征體現