日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java构造方法基础_Java 基础:构造方法

發(fā)布時間:2025/3/20 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java构造方法基础_Java 基础:构造方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄:

一、 概述

二、 構造方法的重載

三、 類的初始化過程

四、this 關鍵字

五、子父類中的構造方法

六、 super 關鍵字

七、 static 關鍵字

八、 final 關鍵字

一、 概述

1. 構造方法作用和定義

構造方法作用:new 對象的同時給成員變量賦值,給對象屬性進行 初始化

構造方法定義:

修飾符 構造方法名 (參數(shù)列表){

}

2. 構造方法的特點

構造方法 沒有返回值類型,連 void 也沒有

也不需要寫返回值。因為它是為構建對象的,對象創(chuàng)建完,方法就執(zhí)行結束。

構造 方法名 必須和 類名 保持一致

只有在 創(chuàng)建對象 的時候 自動 調用執(zhí)行,而且只執(zhí)行 一次

3. 注意事項

每一 class 類都 必須有一個構造方法,如果自己不寫,系統(tǒng)會給出 默認 構造方法

編譯 的時候,系統(tǒng)會自動檢查類中是否有構造方法,如果沒有編譯器就會自動添加一個構造方法

如果你提供了構造方法,系統(tǒng)將不再提供默認的構造方法

構造方法也是可以 重載 的

在創(chuàng)建對象時,會調用與 參數(shù)列表對應 的構造方法

構造方法的內存圖

構造方法

二、 構造方法的重載

一個類中可以有 多個 構造方法,多個構造方法是以 重載 的形式存在的

意義在于:可以根據(jù)不同的需求,定義不同的構造方法,靈活地初始化對象的成員變量

構造方法是可以被 private 修飾,作用是:其他程序無法創(chuàng)建該類的對象

class Person {

private int age;

private String name;

// 私有無參數(shù)的構造方法,即外界不能通過new Person();語句創(chuàng)建本類對象

private Person() {

}

// 多個構造方法是以重載的形式存在

Person(int a) {

age = a;

}

Person(String nm, int a) {

name = nm;

age = a;

}

}

三、 類的初始化過程

Student s = new Student(); 在內存中做了哪些事情?

加載 Student.class 文件進入內存

在棧內存為 s 開辟空間

在堆內存為學生對象開辟空間

對學生對象的成員變量進行默認初始化

對學生對象的成員變量進行顯示初始化

通過構造方法對學生對象的成員變量賦值

學生對象初始化完畢,把對象地址賦值給 s 變量

類的初始化過程內存圖

完整對象初始化過程

四、this 關鍵字

1. this 關鍵字:本類對象的引用

this 是在方法中使用的,哪個對象調用了該方法,那么, this 就代表調用該方法的對象引用

this 什么時候存在的? 當創(chuàng)建對象的時候, this 就存在了

this 的作用:用來區(qū)別同名的成員變量與局部變量(this .成員變量)

2. 成員變量隱藏

在局部變量作用域中,如果定義了一個和成員變量同名的局部變量,此時,在局部變量作用域中,就無法用變量名訪問到成員變量,而只能訪問到同名的局部變量

當需要訪問成員變量是,只需要在成員變量前面加上 this. 即可

調用其他構造方法的語句 必須 定義在構造方法的 第一行,原因是初始化動作要 最先執(zhí)行。

五、子父類中的構造方法

1. 調用

在創(chuàng)建子類對象時,父類的構造方法會 先執(zhí)行,因為子類中所有構造方法的第一行有默認的隱式 super(); 語句,它是用來訪問父類中的空參數(shù)構造方法,進行父類成員的初始化操作

this()是調用本類的構造方法,super() 是調用父類的構造方法, 且兩條語句 不能同時存在

無論如何,子類的所有構造方法,直接或間接 必須調用 到父類構造方法; 子類的構造方法什么都不寫,默認 的構造方法第一行super()

子類初始化內存圖:

子類初始化

2. 當父類中沒有無參數(shù)構造方法的時候,怎么辦?

通過super(參數(shù)) 訪問父類有參構造方法

通過 this(參數(shù)) 訪問本類中其他構造方法

注意:本類中的其他構造方法必須已經能夠正常訪問父類構造方法

3. 為什么子類對象創(chuàng)建都要訪問父類中的構造方法?

因為子類繼承了父類的內容,所以創(chuàng)建對象時,必須要先看父類是如何對其內容進行初始化的。

所以子類在初始化時,必須先到父類中去執(zhí)行父類的初始化動作。這樣,才可以使用父類中的內容。

總結:子類的初始化要保證,在初始化子類成員之前,必須首先初始化父類成員,因為,子類功能的實現(xiàn),常常會依賴父類,所以在初始化的時候,保證先初始化父類,再初始化子類

4. 創(chuàng)建子類對象過程的細節(jié)

如果子類的構造方法 **第一行寫了 this **調用了本類其他構造方法,那么 super 調用 父類的語句還有嗎?

這時是沒有的,因為 this() 或者 super(),只能定義在構造方法的第一行,因為初始化動作要先執(zhí)行。

父類構造方法中是否有隱式的 super 呢?

也是有的。只要是構造方法默認第一行都是 super();

六、 super 關鍵字

指的是父類的存儲空間(理解為父類的引用)

調用父類的成員變量:

super.成員變量;

調用父類的構造方法:

super(參數(shù));

調用方法的成員方法:

super.成員方法();

關鍵字super 可以在任意的非靜態(tài)方法中使用

七、 static 關鍵字

1. static 特點

被 static 修飾的成員變量 屬于類,不屬于這個類的某個對象。優(yōu)先于對象存在,被類的所有對象共享

也就是說,多個對象在訪問或修改 static 修飾的成員變量時,其中一個對象將 static 成員變量值進行了修改,其他對象中的 static 成員變量值會跟著改變,即多個對象共享同一個 static 成員變量

被 static 修飾的成員可以并且建議通過 類名 直接訪問

訪問靜態(tài)成員的格式:

類名.靜態(tài)成員變量名

類名.靜態(tài)成員方法名(參數(shù))

對象名.靜態(tài)成員變量名 ------不建議使用該方式,會出現(xiàn)警告

對象名.靜態(tài)成員方法名(參數(shù)) -----不建議使用該方式,會出現(xiàn)警告

2. static 注意事項

靜態(tài)內容是優(yōu)先于對象存在的,只能訪問靜態(tài) 。靜態(tài)修飾的內容存于內存的 靜態(tài)區(qū)。

main 方法為靜態(tài)方法,僅僅為程序執(zhí)行入口,它不屬于任何一個對象,可以定義在任意類中

靜態(tài)上下文中,不能引用非靜態(tài)的成員變量或成員方法

靜態(tài)方法中無法訪問普通成員; 靜態(tài)成員方法中,不能調用非靜態(tài)的成員方法(靜態(tài)只能訪問/調用靜態(tài))

在靜態(tài)上下文中,無法使用 this/super 關鍵字, 因為 this/super 指代的是對象

3. 靜態(tài)變量和成員變量的區(qū)別

所屬不同

靜態(tài)變量屬于 類,所以也稱為為 類變量。

成員變量屬于 對象,所以也稱為 實例變量(對象變量)

內存中位置不同

靜態(tài)變量存儲于方法區(qū)的靜態(tài)區(qū)

成員變量存儲于堆內存

內存出現(xiàn)時間不同

靜態(tài)變量隨著 類 的加載而加載,隨著類的消失而消失

成員變量隨著 對象 的創(chuàng)建而存在,隨著對象的消失而消失

調用不同

靜態(tài)變量可以通過類名調用,也可以通過對象調用

成員變量只能通過 對象名 調用

靜態(tài)變量和方法的初始化內存圖:

靜態(tài)變量和方法的初始化

4. 定義靜態(tài)常量

public static final 修飾的變量來完成定義,此時 變量名用全部大寫,多個單詞使用 下劃線 連接

public static final 數(shù)據(jù)類型 變量名 = 值;

當我們想 使用類的靜態(tài)成員 時,不需要創(chuàng)建對象,直接使用類名 來訪問即可

接口中的每個成員變量都 默認 使用public static final 修飾。

所有接口中的成員變量已是 靜態(tài)常量,由于接口沒有構造方法,所以必須 顯示 賦值。可以直接用 接口名 訪問。

八、 final 關鍵字

1. 概述

繼承的出現(xiàn)提高了代碼的復用性,并方便開發(fā)。但隨之也有問題,有些類在描述完之后,不想被繼承,或者有些類中的部分方法功能是固定的,不想讓子類重寫。可是當子類繼承了這些特殊類之后,就可以對其中的方法進行重寫,那怎么解決呢?

要解決上述的這些問題,需要使用到一個關鍵字 final , final 的意思為最終,不可變。 final 是個修飾符,它可以用來修飾 類,類的成員,以及局部變量

2. 特點

final 修飾 類 不可以被繼承,但是可以繼承其他類。

final 修飾的 方法不可以被覆蓋,但父類中沒有被 final 修飾方法,子類覆蓋后可以加 final

final 修飾的 變量 稱為常量,這些變量只能賦值一次。

final 修飾的 引用類型的變量 值為對象地址值,地址值不能更改,但是地址內的對象屬性值可以修改

final 修飾 成員變量 ,需要在創(chuàng)建對象前賦值,否則報錯。(當沒有顯式賦值時,多個構造方法的均需要為其賦值。)

3. 自定義常量的初始化

自定義常量的初始化,可以通過 構造方法 來初始化

注意事項: 如果通過構造方法,來對自定義常量進行初始化,要保證,每一個構造方法中 都必須有初始化自定義常量的初始化語句

總結

以上是生活随笔為你收集整理的java构造方法基础_Java 基础:构造方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩免费观看一区=区三区 | 亚洲伊人色 | 久久精品久久精品 | av日日操| 日韩精品1| a激情| 一级片免费网址 | 99er在线观看 | 精品人妻一区二区三区久久夜夜嗨 | 高清av免费观看 | 亚洲AV午夜福利精品一级无码 | 亚洲 国产 日韩 欧美 | 麻豆综合网 | 日本熟伦人妇xxxx | 精品久久久99 | 在线观看av一区二区 | 免费人成 | 久久久成人免费视频 | 午夜av在线播放 | 国产嫩草影视 | tube极品少妇videos | 中文在线字幕免 | 91精品久久人妻一区二区夜夜夜 | 9999re| 色婷婷av一区二区三区麻豆综合 | 伊人天天 | 亚洲国产日韩一区无码精品久久久 | av导航站| 欧美一道本 | 激情五月婷婷综合网 | 日本精品国产 | 国产伦精品一区二区三区视频痴汉 | 超碰人人在线观看 | 你懂的亚洲 | 91天堂在线| 欧美在线播放视频 | 亚洲一区二区三区视频在线 | 亚洲第一视频网站 | 无码专区久久综合久中文字幕 | 免费av入口 | jizz日本免费 | www.青青草.com| 丁香六月欧美 | 农村一级毛片 | 一区二区成人网 | 四虎永久免费在线观看 | 色欲欲www成人网站 老色鬼av | 日韩五月| 人人妻人人爽一区二区三区 | 欧美11p | 综合在线播放 | 亚洲无人区码一码二码三码的含义 | 国产伦精品一区二区三区千人斩 | 亚洲黄色免费网站 | 欧美成人极品 | 黄大片18满岁 | 在线看中文字幕 | 在线免费播放 | 成人h动漫精品一区二区下载 | 黄色wwww | 亚洲精品国产精品国自产观看浪潮 | 国产69视频在线观看 | 99久久精品国产亚洲 | 日韩色婷婷 | 肉肉h| 中文字幕一区二区三区人妻在线视频 | 淫僧荡尼巨乳(h)小说 | 精品人伦一区二区三电影 | 成人伊人网 | 精品少妇v888av| 99re久久 | 国产精品久久久久久久 | 日韩欧美在线不卡 | 男人的亚洲天堂 | 呦呦精品| 91精品国产综合久久久蜜臀 | 成年人性生活免费视频 | 日本性生活一级片 | 黄色在线免费视频 | 九九九久久久精品 | 日韩欧美精品久久 | 天天操网站 | 国产91久| caopeng在线 | 亚洲av永久无码精品一区二区国产 | 999久久久国产精品 韩国精品一区二区 | 99国产精品久久久久99打野战 | 激情六月综合 | 久久精品视频播放 | 一个人在线观看免费视频www | 最近中文字幕在线视频 | 国产av电影一区二区 | 欧美精品999| www.成人在线视频 | 久久久人人人 | 日韩视频在线视频 | 亚欧洲精品在线视频 | 77久久 | 亚洲精品国产成人 |