Java 構造方法的使用詳解
1. 看一個需求
看一個需求:前面我們在創(chuàng)建人類的對象時,是先把一個對象創(chuàng)建好后,再給他的年齡和姓名屬性賦值,如果現(xiàn)在要求,在創(chuàng)建人類的對象時,就直接指定這個對象的年齡和姓名,該怎么做? 這時就可以使用構造器。
2. 基本語法
[修飾符] 方法名(形參列表){
方法體;
}
說明:
- 構造器的修飾符可以默認, 也可以是
public protected private
- 構造器沒有返回值
- 方法名 和類名字必須一樣
- 參數(shù)列表 和 成員方法一樣的規(guī)則
- 構造器的調用, 由系統(tǒng)完成
3. 基本介紹
構造方法又叫構造器(constructor
),是類的一種特殊的方法,它的主要作用是完成對新對象的初始化。它有幾個特點:
- 方法名和類名相同
- 沒有返回值
- 在創(chuàng)建對象時,系統(tǒng)會自動的調用該類的構造器完成對象的初始化。
4. 快速入門
現(xiàn)在就用構造方法來完成剛才提出的問題:在創(chuàng)建人類的對象時,就直接指定這個對象的年齡和姓名
Constructor01.java
public class Constructor01 { //編寫一個main方法 public static void main(String[] args) { //當我們new 一個對象時,直接通過構造器指定名字和年齡 Person p1 = new Person("smith", 80); System.out.println("p1的信息如下"); System.out.println("p1對象name=" + p1.name);//smith System.out.println("p1對象age=" + p1.age);//80 } } //在創(chuàng)建人類的對象時,就直接指定這個對象的年齡和姓名 // class Person { String name; int age; //構造器 //老韓解讀 //1. 構造器沒有返回值, 也不能寫void //2. 構造器的名稱和類Person一樣 //3. (String pName, int pAge) 是構造器形參列表,規(guī)則和成員方法一樣 public Person(String pName, int pAge) { System.out.println("構造器被調用,完成對象的屬性初始化"); name = pName; age = pAge; } }
5. 注意事項和使用細節(jié)
public class ConstructorDetail { //編寫一個main方法 public static void main(String[] args) { Person p1 = new Person("xdr630", 24);//第1個構造器 Person p2 = new Person("tom");//第2個構造器 } } class Person { String name; int age;//默認0 //第1個構造器 public Person(String pName, int pAge) { name = pName; age = pAge; } //第2個構造器, 只指定人名,不需要指定年齡 public Person(String pName) { name = pName; } }
class Dog { //如果程序員沒有定義構造器,系統(tǒng)會自動給類生成一個默認無參構造器(也叫默認構造器) //使用javap指令 反編譯看看 /* 默認構造器 Dog() { } */ //一旦定義了自己的構造器,默認的構造器就覆蓋了,就不能再使用默認的無參構造器, //除非顯式的定義一下,即: Dog(){} 寫 (這點很重要) // public Dog(String dName) { //... } Dog() { //顯式的定義一下 無參構造器 } }
6. 練習
ConstructorExercise.java
在前面定義的 Person 類中添加兩個構造器:
- 第一個無參構造器:利用構造器設置所有人的 age 屬性初始值都為 18
- 第二個帶 pName 和 pAge 兩個參數(shù)的構造器:使得每次創(chuàng)建 Person 對象的同時初始化對象的 age 屬性值和 name 屬性值。分別使用不同的構造器:
public class ConstructorExercise { //編寫一個main方法 public static void main(String[] args) { Person p1 = new Person();//無參構造器 //下面輸出 name = null, age = 18 System.out.println("p1的信息 name=" + p1.name + " age=" + p1.age); Person p2 = new Person("scott", 50); //下面輸出 name = scott, age = 50 System.out.println("p2的信息 name=" + p2.name + " age=" + p2.age); } } /** * 在前面定義的Person類中添加兩個構造器: * 第一個無參構造器:利用構造器設置所有人的age屬性初始值都為18 * 第二個帶pName和pAge兩個參數(shù)的構造器: * 使得每次創(chuàng)建Person對象的同時初始化對象的age屬性值和name屬性值。 * 分別使用不同的構造器,創(chuàng)建對象. */ class Person { String name;//默認值 null int age;//默認 0 //第一個無參構造器:利用構造器設置所有人的age屬性初始值都為18 public Person() { age = 18; } //第二個帶pName和pAge兩個參數(shù)的構造器 public Person(String pName, int pAge) { name = pName; age = pAge; } }
到此這篇關于Java 構造方法的使用詳解的文章就介紹到這了,更多相關Java 構造方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解Java Project項目打包成jar,并生成exe文件
本篇文章主要介紹了Java Project項目打包成jar,并生成exe文件,非常具有實用價值,有興趣的可以了解一下。2017-01-01Java Optional<Foo>轉換成List<Bar>的實例方法
在本篇內(nèi)容里小編給大家整理的是一篇關于Java Optional<Foo>轉換成List<Bar>的實例方法,有需要的朋友們可以跟著學習下。2021-06-06Java利用TCP實現(xiàn)服務端向客戶端消息群發(fā)的示例代碼
這篇文章主要為大家詳細介紹了Java如何利用TCP協(xié)議實現(xiàn)服務端向客戶端消息群發(fā)功能,文中的示例代碼講解詳細,需要的可以參考下,希望對你有所幫助2022-08-08springboot 設置局域網(wǎng)訪問的實現(xiàn)步驟
Spring Boot是一個開源Java-based框架,用于創(chuàng)建獨立的、生產(chǎn)級別的Spring應用,它旨在簡化Spring應用的初始搭建及開發(fā)過程,通過提供各種自動配置的starter包,Spring Boot使得項目配置變得簡單快速,感興趣的朋友一起看看吧2024-02-02IntelliJ IDEA2020.1版本更新pom文件自動導包的方法
這篇文章主要介紹了IntelliJ IDEA2020.1版本更新pom文件自動導包的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06MyBatis直接執(zhí)行SQL的工具SqlMapper
今天小編就為大家分享一篇關于MyBatis直接執(zhí)行SQL的工具SqlMapper,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12Java中保留兩位小數(shù)的四種方法實現(xiàn)實例
今天小編就為大家分享一篇關于Java中保留兩位小數(shù)的四種方法實現(xiàn)實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02從log4j切換到logback后項目無法啟動的問題及解決方法
這篇文章主要介紹了從log4j切換到logback后項目無法啟動的問題及解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01