什麼是 Java 構造器?
構造器是程式設計的強大元件。使用它們來釋放 Java 的全部潛力。
在開源、跨平臺程式設計領域,Java 無疑(?)是無可爭議的重量級語言。儘管有許多偉大的跨平臺框架,但很少有像 Java 那樣統一和直接的。
當然,Java 也是一種非常複雜的語言,具有自己的微妙之處和慣例。Java 中與構造器有關的最常見問題之一是:它們是什麼,它們的作用是什麼?
簡而言之:構造器是在 Java 中建立新物件時執行的操作。當 Java 應用程式建立一個你編寫的類的例項時,它將檢查構造器。如果(該類)存在構造器,則 Java 在建立例項時將執行構造器中的程式碼。這幾句話中包含了大量的技術術語,但是當你看到它的實際應用時就會更加清楚,所以請確保你已經安裝了 Java 並準備好進行演示。
沒有使用構造器的開發日常
如果你正在編寫 Java 程式碼,那麼你已經在使用構造器了,即使你可能不知道它。Java 中的所有類都有一個構造器,因為即使你沒有建立構造器,Java 也會在編譯程式碼時為你生成一個。但是,為了進行演示,請忽略 Java 提供的隱藏構造器(因為預設構造器不新增任何額外的功能),並觀察沒有顯式構造器的情況。
假設你正在編寫一個簡單的 Java 擲骰子應用程式,因為你想為遊戲生成一個偽隨機數。
首先,你可以建立骰子類來表示一個骰子。你玩了很久《龍與地下城》,所以你決定建立一個 20 面的骰子。在這個示例程式碼中,變數 dice
是整數 20,表示可能的最大擲骰數(一個 20 邊骰子的擲骰數不能超過 20)。變數 roll
是最終的隨機數的佔位符,rand
用作隨機數種子。
import java.util.Random;
public class DiceRoller {
private int dice = 20;
private int roll;
private Random rand = new Random();
接下來,在 DiceRoller
類中建立一個函式,以執行計算機模擬模子滾動所必須採取的步驟:從 rand
中獲取一個整數並將其分配給 roll
變數,考慮到 Java 從 0 開始計數但 20 面的骰子沒有 0 值的情況,roll
再加 1 ,然後列印結果。
import java.util.Random;
public class DiceRoller {
private int dice = 20;
private int roll;
private Random rand = new Random();
最後,產生 DiceRoller
類的例項並呼叫其關鍵函式 Roller
:
// main loop
public static void main (String[] args) {
System.out.printf("You rolled a ");
DiceRoller App = new DiceRoller();
App.Roller();
}
}
只要你安裝了 Java 開發環境(如 OpenJDK),你就可以在終端上執行你的應用程式:
$ java dice.java
You rolled a 12
在本例中,沒有顯式構造器。這是一個非常有效和合法的 Java 應用程式,但是它有一點侷限性。例如,如果你把遊戲《龍與地下城》放在一邊,晚上去玩一些《快艇骰子》,你將需要六面骰子。在這個簡單的例子中,更改程式碼不會有太多的麻煩,但是在複雜的程式碼中這不是一個現實的選擇。解決這個問題的一種方法是使用構造器。
建構函式的作用
這個示例專案中的 DiceRoller
類表示一個虛擬骰子工廠:當它被呼叫時,它建立一個虛擬骰子,然後進行“滾動”。然而,透過編寫一個自定義構造器,你可以讓擲骰子的應用程式詢問你希望模擬哪種型別的骰子。
大部分程式碼都是一樣的,除了構造器接受一個表示面數的數字引數。這個數字還不存在,但稍後將建立它。
import java.util.Random;
public class DiceRoller {
private int dice;
private int roll;
private Random rand = new Random();
// constructor
public DiceRoller(int sides) {
dice = sides;
}
模擬滾動的函式保持不變:
public void Roller() {
roll = rand.nextInt(dice);
roll += 1;
System.out.println (roll);
}
程式碼的主要部分提供執行應用程式時提供的任何引數。這的確會是一個複雜的應用程式,你需要仔細解析引數並檢查意外結果,但對於這個例子,唯一的預防措施是將引數字串轉換成整數型別。
public static void main (String[] args) {
System.out.printf("You rolled a ");
DiceRoller App = new DiceRoller( Integer.parseInt(args[0]) );
App.Roller();
}
啟動這個應用程式,並提供你希望骰子具有的面數:
$ java dice.java 20
You rolled a 10
$ java dice.java 6
You rolled a 2
$ java dice.java 100
You rolled a 44
構造器已接受你的輸入,因此在建立類例項時,會將 sides
變數設定為使用者指定的任何數字。
構造器是程式設計的功能強大的元件。練習用它們來解開了 Java 的全部潛力。
via: https://opensource.com/article/19/6/what-java-constructor
作者:Seth Kenlon 選題:lujun9972 譯者:laingke 校對:wxy
相關文章
- java構造器Java
- Java--構造器和構造方法Java構造方法
- Java構造器 小白版Java
- Java是什麼_Java是做什麼的?Java
- Java虛擬機器是什麼?Java虛擬機
- Java虛擬機器1:什麼是JavaJava虛擬機
- 什麼是Serverless無伺服器架構?Server伺服器架構
- java學習之深入構造器Java
- Java 8 最快的垃圾蒐集器是什麼?Java
- Java是什麼? Java適用於什麼工作?Java
- 什麼是java常量?Java
- 什麼是java常量Java
- java 中/**是什麼Java
- 什麼是JAVA ? (轉)Java
- Java是什麼 (轉)Java
- Effective Java - 靜態方法與構造器Java
- 構造器
- 什麼是架構師架構
- 什麼是Lambda架構架構
- VIE架構是什麼架構
- 什麼是Saas架構?架構
- DCI架構是什麼?架構
- 概念架構是什麼架構
- 什麼是池架構?架構
- 什麼是WEB伺服器,什麼是應用伺服器Web伺服器
- DHCP是什麼?DHCP伺服器是什麼意思?伺服器
- 什麼是結構化資料?什麼是半結構化資料?
- Java是什麼?主要是幹什麼的?Java
- Java swing是什麼?有什麼作用?Java
- Java入門:深度理解JAVA本身的構造器(轉)Java
- java中RMI是什麼Java
- java中@Inherited是什麼?Java
- java中@Retention是什麼?Java
- Java 繼承是什麼?Java繼承
- Java專案是什麼?Java
- 一文了解 Java 中的構造器Java
- 什麼是伺服器?伺服器
- 伺服器是什麼伺服器