www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > > 充電吧
[導(dǎo)讀]靜態(tài)代碼塊格式:static{狀態(tài)代碼塊的執(zhí)行語句}特點:隨著類的加載而執(zhí)行,只執(zhí)行一次,優(yōu)先于主函數(shù)用于給類進行初始化重點:靜態(tài)的特性,執(zhí)行順序?Person p = new Person();=&

靜態(tài)代碼塊
格式:
static
{
狀態(tài)代碼塊的執(zhí)行語句
}

特點:隨著類的加載而執(zhí)行,只執(zhí)行一次,優(yōu)先于主函數(shù)
用于給類進行初始化
重點:靜態(tài)的特性,執(zhí)行順序


?

Person p = new Person();

=>JVM
=>棧 main函數(shù)
=>棧生成P變量
=>堆加載Person類
=>靜態(tài)代碼塊執(zhí)行
=>堆開辟空間存儲屬性
=>屬性默認初始化
=>構(gòu)造代碼塊初始化
=>構(gòu)造函數(shù)初始化
=>P指向生成的Person類,成為對象


1.因為new用到了Person,class所以會先找到Person.class文件并加載到內(nèi)存中
2.執(zhí)行該類的static代碼塊,如果有的話,給Person.class類進行初始化
3.在堆內(nèi)存中開辟空間,分配內(nèi)存地址
4.在堆內(nèi)存中劍靈對象的特有屬性,并進行默認初始化
5.對屬性進行顯示初始化
6.對對象進行構(gòu)造代碼塊初始化
7.對對象進行對于的構(gòu)造函數(shù)初始化
8.將內(nèi)存地址賦值給棧內(nèi)存中P變量

?


擴展====>>>>設(shè)計模式:解決某一類問題最行之有效的方法
java中23種通用設(shè)計模式
單例設(shè)計模式:解決一個類在內(nèi)存中只存在一個對象
1.為了避免其他程序過多建立,先禁止其他程序建立該類對象
2.還為了讓其他程序可以訪問到該類對象,只好在本類中.自定義一個對象
3.為了方便其他程序?qū)ψ远x對象的訪問,可以對外提供一些訪問方式

具體實現(xiàn)??????????? (靈活使用static和private修飾符)
1.將構(gòu)造函數(shù)私有化
2.在類中創(chuàng)建一個本類對象
3.提供一個方法可以獲取到該對象

?


惡漢式>>>>對象靜態(tài)加載>>>>一般用這個


懶漢式>>>>對象延時加載>>>>存在BUG>>>與CPU處理機制相關(guān)


繼承:???????

java只支持單繼承,不支持多繼承
因為多繼承容易帶來安全隱患:
當多個父類中定義了功能相同內(nèi)容不同時子類無法確定運行那個
java其實保留了多繼承,并用另一種表現(xiàn)形式來完成>>>多實現(xiàn)
java支持多層繼承
父類中的內(nèi)容是子類中的共性內(nèi)容
創(chuàng)建對象時只創(chuàng)建最子類的對象即可
>>>>>查閱父類功能,創(chuàng)建子類對象

super超類>>>父類對象的引用

this代表的是本類對象的引用
super代表父類對象的引用

?

當子類出現(xiàn)和父類一模一樣的函數(shù)時,子類的函數(shù)會覆蓋父類的函數(shù)

當子類繼承父類,沿襲了父類的功能,到子類中
但是子類雖級別該功能,但是內(nèi)容卻和父類不一致
這時,沒必要定義新功能,而是使用覆蓋,,保留父類的功能,并重寫功能

在父類功能上添加內(nèi)容,可以在重寫時使用super關(guān)鍵字保留原內(nèi)容

子類覆蓋父類,必須保證子類權(quán)限大于等于父類權(quán)限,才可以覆蓋
否則會造成語法上的錯誤

靜態(tài)只能覆蓋靜態(tài)

public大于默認大于private

重載:阻抗同名函數(shù)的參數(shù)列表
重寫:子父類方法要一模一樣


子父類構(gòu)造函數(shù)
在子類對象初始化時,父類的構(gòu)造函數(shù)也會運行
那是因為子類的構(gòu)造函數(shù)默認第一行有一條隱式的語句 super()
super():會訪問父類中空參數(shù)的構(gòu)造函數(shù)
而且子類中所有的構(gòu)造函數(shù)默認第一行都是super()
子類肯定會訪問父類的構(gòu)造函數(shù)
因為父類中的數(shù)據(jù),子類可以直接獲取,所以子類對象在建立時
需要先查看父類是如何對這些數(shù)據(jù)進行初始的
所以子類在對象初始化時,要先訪問下父類中的構(gòu)造函數(shù)
如果要訪問父類中指定的構(gòu)造函數(shù),可以通過搜東定義super()語句的方式來指定
注意:super語句一定定義在子類構(gòu)造函數(shù)的第一行
this()和super()不能在同時在構(gòu)造函數(shù)當中
因為他們都必須寫在第一行
必須要先進行初始

??? 子類所有的構(gòu)造函數(shù),默認都會訪問父類中空參數(shù)的構(gòu)造函數(shù)
??? 因為子類每一個構(gòu)造函數(shù)內(nèi)的第一行都有一句隱式的super()
??? 當父類中沒有空參數(shù)的構(gòu)造函數(shù)時
??? 子類必須手動通過super語句形式來指定要訪問父類中的構(gòu)造函數(shù)
??? 子類中至少會有一個剛轉(zhuǎn)身會訪問父類中的構(gòu)造函數(shù)


final關(guān)鍵字(修飾符)>>>>>>最終
可以修飾類,函數(shù),變量
被final修飾的類不可以被繼承
為了避免繼承后被子類復(fù)寫
被final修飾的方法不能被復(fù)寫
被final修飾的變量是一個常量,只能賦值一次
既可以修飾成員變量,也可以修飾局部變量
當在描述事物時,一些數(shù)據(jù)的出現(xiàn)值是固定的,那么這時為了增強閱讀性
都給這些值起個名字方便閱讀,而這個值不需要改變,所以加上final修飾
注意:常量手寫規(guī)范,所有字母都大寫,如果多個單詞組成,單詞間_理解
內(nèi)部類定義在局部位置上時,只能訪問該局部被final修飾的局部變量


當多個類中出現(xiàn)相同功能,但是功能內(nèi)容不同
這時可以進行向上抽取
這時只抽取功能第一,而不抽取功能內(nèi)容
abstrace>>抽象
抽象方法一定定義在抽象類中
抽象方法和抽象類都必須被abstract關(guān)鍵字修飾
抽象類不可以用new創(chuàng)建對象,因為調(diào)用抽象方法沒意義
抽象類中的方法要被使用,必須由子類復(fù)寫所有的抽象方法后,劍靈子類對象調(diào)用
如果只覆蓋了部分抽象方法,那么該子類還是一個抽象類
抽象類和一般類沒有太大的不同
抽象類可以不定義抽象方法,這樣做僅僅是不讓改類建立對象

模板方法設(shè)計模式
模板方法:在定義功能時,功能的一部分是確定的,但是有一部分是不確定的
而確定的部分使用不確定的部分
那么就將不確定的部分抽象
由子類具像化


接口:interface
接口的格式特點:
接口中常見定義:常量,抽象方法
常量:public static final
抽象方法:public abstract
接口中的成員都是public的(共有的)
接口不可以創(chuàng)建對象
需要子類將接口具象化
implements?? 具像化接口

接口可以被類多實現(xiàn),這也java是對多繼承不支持的轉(zhuǎn)換形式

一個類可以繼承一個類以及多個接口
class 子類名 extends 父類名 implements 接口名,接口名........
接口之間可以有繼承關(guān)系,且接口支持多繼承

接口的特點:
對外暴露的規(guī)則
程序功能的擴展
可以用來多實現(xiàn)
類與接口之間是實現(xiàn)關(guān)系,而且類可以繼承一個類的同時實現(xiàn)多個接口
接口與接口之間可以有繼承關(guān)系


多態(tài):可以理解為事物存在的多種體現(xiàn)形態(tài)
多態(tài)的體現(xiàn)
?父類的引用指向了自己的子類對象
?父類的引用也可以接收自己的子類對象
多態(tài)的前提
?必須是類與類之間有關(guān)系>>>>繼承,實現(xiàn)
?通常還有一個前提>>>>存在覆蓋
多態(tài)的好處
?多態(tài)的出現(xiàn)大大的提高了程序的擴展性
多態(tài)的弊端
?提高了擴展性的同時,只能使用父類的引用訪問父類中的成員
多態(tài)的應(yīng)用
多態(tài)的出現(xiàn)注意代碼的特點
?

可以向上轉(zhuǎn)型,類型提升
也可以強制將父類的引用轉(zhuǎn)換成子類類型
但是父類的對象不能強制轉(zhuǎn)換成子類對象
在多態(tài)的應(yīng)用中,始終是子類在變化

判斷某一類型引用指向的對象是什么類型>>>>>>>>>>instanceof

在多態(tài)中成員函數(shù)的特點
在編譯時期,參閱引用型變量所屬的類是否有調(diào)用的方法,如果有編譯通過,沒有則失敗
在運行時期,參閱對象所屬類中是否有調(diào)用方法
成員函數(shù)在多態(tài)調(diào)用時,編譯看左邊,運行看右邊

在多態(tài)中,成員變量的特點
無論編譯和運行,都參考左邊(引用類型變量所屬的類)

在多態(tài)中,成員函數(shù)的特點
無論編譯和運行都參考左邊

上帝>>>>>>>>>--------------Obhect
所有對象的超類(多有對象的直接或者間接父類)
該類中定義的肯定是所有對象都具備的功能
Object類中已經(jīng)提供了的方法,沒有必要重新定義
只要沿襲父類中的功能,建立自己特有內(nèi)容,即覆蓋

內(nèi)部類
將一個類定義在另一個類里面,對里面那個類就稱為內(nèi)部類(內(nèi)置類,箱套類)
訪問特點:
內(nèi)部類可以直接訪問外部類中的成員,包括私有成員
而外部類要訪問內(nèi)部類中的成員必須要建立內(nèi)部類的對象
訪問格式:
?1 =>當內(nèi)部類定義在外部類的成員位置上,而且非私有,可以在外部其他類中
可以直接建立內(nèi)部類對象,
格式:
?外部類名.內(nèi)部類名 變量名 = 外部類對象.內(nèi)部類對象;
?Outer.Inner in = new Outer().new Inner();
?2 =>單內(nèi)部類在成員位置上,就可以被成員修飾符所修飾
?比如:prinvate 將內(nèi)部類在外部類中進行封裝
???? static 內(nèi)部類就具備static的特性
???? 當內(nèi)部類被static修飾后,只能直接訪問外部類中是static成員出現(xiàn)訪問局限
???? 在外部類其他類中,如何直接訪問static內(nèi)部類的非靜態(tài)成員
??new Outer.Inner().function()
???? 唉外部其他類中,如何直接訪問static內(nèi)部類的靜態(tài)成員
??Outer.Inner.function()
注意:當內(nèi)部類中定義了靜態(tài)成員,該內(nèi)部類必須是static的
?當外部類中的靜態(tài)方法訪問內(nèi)部類時,內(nèi)部類也必須是static的


當描述事物時,事物的內(nèi)部還有事物,該事物用內(nèi)部類來描述
因為內(nèi)部事物在使用外部事物的內(nèi)容

內(nèi)部類定義在局部時
不可以被成員修飾符修飾
可以直接訪問外部類中的成員,因為還持有外部類的引用
但是不可以訪問它所在的局部中的變量,只能訪問被final修飾的局部變量(常量)

匿名內(nèi)部類
匿名內(nèi)部類其實就是內(nèi)部類的簡寫格式
定義匿名內(nèi)部類的前提:內(nèi)部類必須是繼承一個類或者實現(xiàn)一個借口
匿名內(nèi)部類的格式:new 父類或接口名(){子類內(nèi)容}
其實匿名內(nèi)部類就是一個匿名子類對象


異常
異常的體系
Throwable
|--Error:通常出現(xiàn)大問題如:運行的類不存在或者內(nèi)存溢出,無法編寫針對代碼對其處理
|--Exception:在運行時運行出現(xiàn)的一起情況,可以通過try,catch,finally進行針對處理
Error和Exception的子類名都是以父類名作為后綴

異常:就是程序在運行時出現(xiàn)不正常情況
異常的由來:java對不正常的情況的封裝

異常的處理(Exception):
try
{
可能出現(xiàn)異常的代碼
}
catch(Exception e)
{
出現(xiàn)異常時的處理代碼
(對捕獲到底異常進行常見出方法操作:e.printStackTrace)
(String.getMessage(),獲取異常信息)
}
finally
{
一定會執(zhí)行的語句
}


在功能上通過throws關(guān)鍵字,在函數(shù)上聲明該功能有可能出現(xiàn)問題,即聲明異常
便于提高安全性,強制讓調(diào)用處進行處理,不處理編譯失敗
?
對多異常的處理
聲明異常時,建議聲明更為具體的異常,這樣可以更具體的處理
聲明幾個異常,就應(yīng)該對應(yīng)有幾個catch處理方法
如果多個catch接手的異常出現(xiàn)繼承關(guān)系時,父類要放最下面
每個catch應(yīng)該針對接手的異常進行針對性處理

因為項目中會出現(xiàn)特有的問題
而這些問題并未被Java所描述并封裝對象
所有對于這些特有的問題可以按照Java的對問題封裝的思想
將特有的問題,進行自定義的異常封裝
即自定義異常:
自定義異常需要繼承于父類異常(Exception類)
可以用throw拋出異常對象
那么就必須要給出對應(yīng)的處理動作
一般函數(shù)類出現(xiàn)異常,函數(shù)上要聲明
自定義異常你可以自定義異常信息(重寫getMessate函數(shù))
只有異常體系(Throwable)中的類和對象才可以被throws和throw拋出

shrows和shrow的區(qū)別
shrows使用在函數(shù)上,后面跟異常類,可以跟多個,用,隔開
shrow作用在函數(shù)內(nèi),后面跟的是異常對象

Exception中有一個特殊的子類異常RuntimeException運行異常
如果函數(shù)內(nèi)容拋出該異常,函數(shù)上可以不用聲明,編譯一樣通過
如果在函數(shù)上聲明了異常,調(diào)用者可以不用進行處理,編譯一樣通過
之所以不用再函數(shù)上聲明,是因為不需要讓調(diào)用者處理
單該異常發(fā)生,希望程序停止因為在運行時,出現(xiàn)了無法繼續(xù)運算的情況
希望停止程序后,對代碼進行修正

自定義異常時,如果該異常的發(fā)生,無法再繼續(xù)運算
就讓自定義異常繼承RuntimeException

對于異??煞譃榫幾g時異常和運行時異常(RuntimeException)

try
{
}
catch
{
處理異常后也可以拋出異常(用于被調(diào)用者識別)
}
finally
{
無論如何都會被執(zhí)行的代碼
(通常用于關(guān)閉資源.)
}


其他格式
try
{
}
finally
{
}
注:catch是用于處理異常的,如果沒有catch就代表異常沒有被處理過,
如果該異常是檢測 時異常,那么必須聲明出去


異常在子父類覆蓋中的體現(xiàn)
子類在覆蓋父類時,如果父類的方法拋出異常,
那么子類的覆蓋方法只能拋出父類的異?;蛟摳割惍惓5淖宇?可以不拋異常)
如果父類方法拋出多個異常,子類在覆蓋該方法時,只能拋出父類異常的子集
如果父類方法沒有異常拋出,子類在覆蓋方法是時,不可以拋出異常
子類方法發(fā)生了異常,就必須用catch進行處理,絕對不能拋出


包(package)
對類文件進行分類管理
給類提供多層命名空間
寫在文件的第一行
類名的全稱是? 包名.類名

包名所有字母小寫

當程序中使用packate時
在編譯時的格式為
javac -d 目錄名 類名.java

protected(保護權(quán)限)? 權(quán)限修飾符

?


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉