java成员方法的一般格式为_Java基本知识(四)
一、二維數(shù)組
1、定義方式
m:代表當(dāng)前二維數(shù)組中有多少個一維數(shù)組;n:代表每個一維數(shù)組的長度
(1)數(shù)據(jù)類型[][] 數(shù)組名=new 數(shù)據(jù)類型[m][n]
(2)數(shù)據(jù)類型[][] 數(shù)組名=new 數(shù)據(jù)類型[m][ ],只給定m個一維數(shù)組,每個一維數(shù)組長度動態(tài)給定。
(3)數(shù)據(jù)類型[][] 數(shù)組名={{元素1,元素2,......}...{......}},靜態(tài)初始化。
(4)數(shù)據(jù)類型[] 數(shù)組名[]=new 數(shù)據(jù)類型[m][n]
(5)數(shù)據(jù)類型 數(shù)組名[][]=new 數(shù)據(jù)類型[m][n]
例如:
運(yùn)行結(jié)果:
二、代碼塊
(1)概述:用{}括起來的統(tǒng)稱為代碼塊。
(2)分類及其特點(diǎn):
A、局部代碼塊:在main()方法里,限定變量的生命周期,外部不能訪問局部代碼塊中的變量;
B、構(gòu)造代碼塊:在一個類的成員方法中,用{}括起來,可將多個方法中相同代碼塊放到構(gòu)造代碼塊中,對對象進(jìn)行初始化,在每次執(zhí)行構(gòu)造方法之前,先執(zhí)行構(gòu)造代碼塊;
C、靜態(tài)代碼塊:在一個類的成員位置中,用{}括起來,被Static修飾,一般情況下,用于給類進(jìn)行初始化,并且只能執(zhí)行一次。
(3)靜態(tài)代碼塊,構(gòu)造代碼塊,構(gòu)造方法的執(zhí)行流程:靜態(tài)代碼塊>構(gòu)造代碼塊>構(gòu)造方法。
例如:
三、繼承
1、概述:多個類存在相同屬性或行為時(shí),將這些內(nèi)容抽取到一個單獨(dú)的類中,多個類無需再定義這些屬性或行為,只需要繼承那個類即可。其中被繼承的類稱為父類、基類或超類,繼承的類稱為子類或派生類。
2、關(guān)鍵字:extends。
3、子類繼承格式:
Class 子類名 extends 父類名{......}
4、設(shè)計(jì)原則:高內(nèi)聚低耦合。內(nèi)聚是指實(shí)現(xiàn)一個功能的能力(能用一個類完成的事情盡量不要用多個類去完成),耦合指類與類之間的關(guān)系,盡量降低耦合性。
5、繼承特點(diǎn):
(1)只支持單繼承,不支持多繼承(一個類只能有一個父類,不能有多個父類);
(2)支持多層繼承(繼承體系)。例如:
Class A{}
Class B extends A{}
Class C extends B{}
(3)子類繼承父類,是繼承了父類的所有成員(成員變量、成員方法,包括私有),但子類不能直接訪問父類的私有成員,只能通過父類的公共訪問方法間接的讓子類去訪問。
6、注意事項(xiàng):
(1)子類可繼承父類所有成員(成員方法、成員變量),但是父類中的私有成員,子類只能通過在父類中創(chuàng)建公有方法間接去訪問,不能直接去訪問;
(2)子類不能繼承父類的構(gòu)造方法,但可通過super關(guān)鍵字去訪問父類構(gòu)造方法;
(3)不能為部分功能而去使用繼承,當(dāng)類與類之間的關(guān)系體現(xiàn)的是“is a”的時(shí)候使用繼承。
(4)例如:
7、super關(guān)鍵字
(1)super代表父類的空間標(biāo)識(即父類的引用或父類的對象)。
(2)super與this類似,區(qū)別如下:
this:表示對本類的引用。
Super:代表父類存儲空間的標(biāo)識(可理解為父類引用)。
(3)用法(this與super均可如下使用):
A、訪問成員變量:this.成員變量名、super.成員變量名
B、訪問構(gòu)造方法:無參:this()、super();有參:this(...)、super(...)
C、訪問成員方法:this.成員方法()、super.成員方法()
8、繼承中成員變量的關(guān)系
在子類方法中訪問一個變量:(1)首先在子類局部范圍找;(2)其次在子類成員范圍找;(3)最后在父類成員范圍找(絕對不能訪問到父類局部范圍)。
當(dāng)子類中定義的成員變量與父類中的成員變量名稱一致時(shí),若用子類的方法訪問該成員變量時(shí),訪問的是子類的成員變量。
9、繼承中成員方法的關(guān)系
(1)子類訪問父類,當(dāng)成員方法名不一致的情況下,分別調(diào)用。
(2)當(dāng)子類中成員方法名與父類中成員方法名一致的情況下:先在子類中的成員方法找,若有則調(diào)用,若無,則在父類中的成員方法找。
10、繼承中構(gòu)造方法的關(guān)系
(1)子類中所有的構(gòu)造方法默認(rèn)都會訪問父類中空參數(shù)的構(gòu)造方法。子類會繼承父類中的數(shù)據(jù),可能還會使用父類中的數(shù)據(jù),所以子類初始化前一定要先完成父類數(shù)據(jù)的初始化,為實(shí)現(xiàn)這個效果,在子類構(gòu)造方法的第一條語句上都默認(rèn)有一個super()。
(2)若父類中沒有構(gòu)造方法,則:a、提供父類的構(gòu)造方法;b、子類通過super關(guān)鍵字去顯示訪問父類其他的帶參構(gòu)造方法;c、子類通過this調(diào)用本類的其他構(gòu)造方法(有參構(gòu)造),間接訪問父類的帶參構(gòu)造方法(子類必須有一個帶參構(gòu)造方法或無參構(gòu)造方法,讓父類進(jìn)行初始化。
(3)注意:super和this都默認(rèn)在構(gòu)造方法中的第一句且必須在第一句,否則會有父類數(shù)據(jù)的多次初始化,可省略。
11、繼承中初始化
(1)初始化方式:分層初始化。
(2)初始化順序:子類繼承父類,父類先進(jìn)行初始化,子類再進(jìn)行初始化。
(3)例如:
12、繼承優(yōu)點(diǎn)
(1)提高了代碼的復(fù)用性(多個類相同的成員放在同一個類中);
(2)提高了代碼的維護(hù)性(若功能代碼需要修改,修改一次即可);
(3)多態(tài)的前提,讓類與類之間產(chǎn)生了關(guān)系。
四、多態(tài)
1、多態(tài)概述:多態(tài)是指允許不同類的對象對同一消息作出響應(yīng)。即同一消息可根據(jù)發(fā)送對象的不同而采用多種不同的行為方式(發(fā)送消息指方法調(diào)用)。
2、多態(tài)前提
(1)必須有繼承關(guān)系;
(2)必須有方法重寫(方法覆蓋);
(3)必須有父類的應(yīng)用指向子類對象(向上轉(zhuǎn)型):父類名 對象名=new 子類名();。
3、多態(tài)中的訪問特點(diǎn)
(1)成員變量:編譯看左,運(yùn)行看左;
(2)成員方法(非靜態(tài)):編譯看左,運(yùn)行看右(存在方法重寫);
(3)成員方法(靜態(tài)):編譯看左,運(yùn)行看左(靜態(tài)和類相關(guān),算不上方法重寫);
(4)構(gòu)造方法:構(gòu)造方法無論是子類還是父類,都是對對象進(jìn)行初始化。
4、向上轉(zhuǎn)型/向下轉(zhuǎn)型
(1)向上轉(zhuǎn)型:將父類的引用指向子類對象,父類名 父類引用=new 子類名()。
(2)向下轉(zhuǎn)型:將子類的應(yīng)用指向父類引用,子類名 子類引用=(子類名) 父類引用,向下轉(zhuǎn)型前提是必須有父類引用,若使用不當(dāng),會出現(xiàn)運(yùn)行時(shí)期異常,即ClassCastException。
(3)舉例:
5、多態(tài)優(yōu)勢
(1)提供代碼的復(fù)用性,由繼承保證;
(2)提供代碼擴(kuò)展性,由多態(tài)保證。
6、多態(tài)弊端
(1)弊端:無法訪問子類的特有功能。
(2)解決方案:利用向下轉(zhuǎn)型,即將子類的應(yīng)用指向父類引用,子類名 子類引用=(子類名) 父類引用,向下轉(zhuǎn)型前提是必須有父類引用,若使用不當(dāng),會出現(xiàn)運(yùn)行時(shí)期異常,即ClassCastException。
7、final關(guān)鍵字
(1)概述:final,最終的,終態(tài)的(不能被修改)。
(2)作用:可修飾類、成員方法、變量。
(3)特點(diǎn):a、可修飾類,但該類不能被繼承,所以聲明類時(shí)不能和abstract同時(shí)存在;b、可修飾成員方法,但成員方法不能被重寫;c、可修飾變量,此時(shí)變量為常量,不能被修改;d、被final修飾只能賦值一次;e、被final修飾時(shí)進(jìn)行初始化和賦值是在使用之前;f、final既可修飾基本數(shù)據(jù)類型,也可修飾引用數(shù)據(jù)類型,若修飾基本數(shù)據(jù)類型,基本數(shù)據(jù)類型的值不可被改變,若使用引用數(shù)據(jù)類型,引用數(shù)據(jù)類型的地址值不能被改變,但堆內(nèi)存中的成員變量值可改變。
(4)final關(guān)鍵字的面試題:
面試題:final、finally、finalize三者區(qū)別?
回答:A、final修飾符(關(guān)鍵字),主要用來修飾類、成員方法,變量等,表示終態(tài)的,最終的。主要作用a、可修飾類,但該類不能被繼承,所以聲明類時(shí)abstract不能和final同時(shí)存在;b、可修飾成員方法,但成員方法只能使用不能被重寫;c、可修飾變量,此時(shí)變量為常量,不能被修改而且必須在聲明時(shí)給出變量的初始值。
B、finally是在異常處理時(shí)提供finally塊來執(zhí)行任何操作。無論有無異常拋出、捕獲,finally塊都會被執(zhí)行。所以在代碼邏輯塊中若有無論發(fā)生什么都必須執(zhí)行的代碼,就放在finally塊中。
C、finalize是方法名。Java技術(shù)允許使用finalize()方法在垃圾回收器將對象從內(nèi)存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時(shí)對這個對象調(diào)用的。該方法在Object類中定義的,因此所有的類都繼承了它。子類覆蓋finalize()方法以整理系統(tǒng)資源或者被執(zhí)行的其他清理工作。Finalize()方法是在垃圾回收器刪除對象之前對這個對象調(diào)用的。
五、抽象類
1、概述:如果一個類中有一個方法聲明抽象功能(抽象方法),則這個類定義為抽象類。其中一個類若有抽象方法,則這個類一定為抽象類;抽象類中不一定都是抽象方法。
2、關(guān)鍵字:abstract
3、抽象類的子類
(1)當(dāng)子類為具體類時(shí),子類必須實(shí)現(xiàn)父類中的抽象功能。
(2)當(dāng)子類為抽象類時(shí),無意義,不能實(shí)例化,不能創(chuàng)建對象。
4、特點(diǎn):抽象類不能直接實(shí)例化,即不能創(chuàng)建對象。
5、抽象類成員特點(diǎn)
(1)成員變量:可以是常量,也可以是變量。
(2)成員方法:可以有抽象方法,也可以有非抽象方法。
(3)構(gòu)造方法:可以有無參構(gòu)造方法,也可以有有參構(gòu)造方法,作用:給對象進(jìn)行初始化。
6、不能與abstract共存的關(guān)鍵字:private、final、static。
7、舉例:抽象類:
子實(shí)現(xiàn)類:
測試類:
六、接口
1、概述:接口是事物擴(kuò)展×××的一個體現(xiàn)。
2、關(guān)鍵字:interface
3、格式:interface 接口名{//抽象功能}
4、接口的子實(shí)現(xiàn)類格式:class 類名+impl implements 接口名{}
5、特點(diǎn):不能實(shí)例化。
6、接口成員特點(diǎn)
(1)成員變量:是一個常量,不能修改,并且有默認(rèn)修飾符public static final;
(2)構(gòu)造方法:接口不存在構(gòu)造方法;
(3)成員方法:不能有方法體,都是抽象方法,有默認(rèn)修飾符:public abstract。
7、接口、類的關(guān)系
(1)類與類之間的關(guān)系:繼承關(guān)系,只支持單繼承,不支持多繼承,可以多層繼承。
(2)類與接口的關(guān)系:實(shí)現(xiàn)關(guān)系,一個類繼承另一個類的同時(shí),還可以實(shí)現(xiàn)多個接口。
(3)接口與接口的關(guān)系:是一種繼承關(guān)系,既可以單繼承,也可以多繼承。
8、接口與抽象類的區(qū)別
(1)成員區(qū)別
成員變量:
抽象類:既可以常量,也可以是變量。
接口:只能是常量,默認(rèn)的修飾符:public static final
構(gòu)造方法:
抽象類:有構(gòu)造方法,無參/有參 (給對象進(jìn)行初始化的)。
接口:無構(gòu)造方法。
成員方法:
抽象類:可以有抽象方法,也可以有非抽象方法。
接口:只有抽象方法 ,默認(rèn)的修飾符:public abstract
(2)類與類/類與接口/接口與接口關(guān)系的區(qū)別
類與類之間的關(guān)系:繼承關(guān)系,只支持單繼承,不支持多繼承,可以多層繼承。
類與接口的關(guān)系:實(shí)現(xiàn)關(guān)系,一個類繼承另一個類的同時(shí),還可以實(shí)現(xiàn)多個接口。
接口與接口的關(guān)系:是一種繼承關(guān)系,既可以單繼承,也可以多繼承。
接口1 extends 接口2,接口3...接口 n
(3)設(shè)計(jì)原則的區(qū)別
抽象類:繼承關(guān)系,體現(xiàn)的是一種"is a"的關(guān)系(A是B的一種)。
接口:類和接口,實(shí)現(xiàn)關(guān)系,體現(xiàn)的是一種" like a"的關(guān)系(擴(kuò)展功能)。
9、實(shí)際開發(fā)中使用頻率
(1)接口多態(tài):使用最多。
(2)抽象類多態(tài):比較多。
(3)具體對象的創(chuàng)建:經(jīng)常會使用。
10、舉例
抽象類:
子實(shí)現(xiàn)類學(xué)生:
子實(shí)現(xiàn)類老師:
接口+測試:
七、內(nèi)部類
1、概述:在B類內(nèi)部定義A類,則A類為B類的內(nèi)部類。
2、內(nèi)部類訪問外部類:內(nèi)部類可直接訪問外部類的成員,包括私有成員。
3、外部類訪問內(nèi)部類:通過創(chuàng)建內(nèi)部類對象的方式間接訪問。
訪問格式:外部類名.內(nèi)部類名 對象名=外部類對象.內(nèi)部類對象。
例如:
4、分類
(1)成員內(nèi)部類:在外部類的成員位置。可直接訪問外部類的成員,包括私有成員。
成員內(nèi)部類修飾符:A、private:(作用)保證了數(shù)據(jù)的安全性。B、static:把靜態(tài)內(nèi)部類看成外部類成員,其特點(diǎn)是靜態(tài)內(nèi)部類訪問外部類數(shù)據(jù),該數(shù)據(jù)必須用static修飾。
例如:
(2)局部內(nèi)部類:在外部類的局部位置。可訪問外部類的成員,包括私有。在外部類的局部位置去訪問內(nèi)部類的成員方法時(shí),需要在局部位置創(chuàng)建內(nèi)部類對象,通過對象去訪問。
例如:
(3)匿名內(nèi)部類
A、前提:有類(該類可以是具體類也可以是抽象類)或接口。
B、格式:new 類名或接口名{ 方法重寫();}
C、本質(zhì):繼承了該類或?qū)崿F(xiàn)了該接口子類對象。
D、匿名內(nèi)部類面試題:補(bǔ)全代碼,在控制臺上輸出(“Hello World”)。截圖如下:
八、形式參數(shù)與返回值
1、概述:形式參數(shù)是基本類型,對實(shí)際參數(shù)無影響;形式參數(shù)是引用類型(類、抽象類、接口),影響實(shí)際參數(shù),情況如下。返回值是基本類型時(shí),用對應(yīng)的基本類型接收數(shù)據(jù)即可;返回值若為引用類型,情況如下。
2、形式參數(shù)為具體類:需要提供該類對象。
返回值:該類對象。
例如:
3、形式參數(shù)為接口:需要提供接口的子實(shí)現(xiàn)類,通過子實(shí)現(xiàn)類進(jìn)行實(shí)例化(接口多態(tài))。
例如:
4、形式參數(shù)為抽象類:需要提供該抽象類的子類,以抽象類多態(tài)的形式創(chuàng)建對象。
返回值:需要當(dāng)前抽象類的子類對象(抽象類多態(tài))。
例如:
九、overload與override區(qū)別
(1)overload:方法重載,方法名一樣,參數(shù)不同(個數(shù)或類型不同),與返回值無關(guān)。
(2)override:方法重寫,子類定義一個與父類一樣的方法聲明,繼承中使用。
總結(jié)
以上是生活随笔為你收集整理的java成员方法的一般格式为_Java基本知识(四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务发现与负载均衡traefik ing
- 下一篇: Python安装FrankMocap实现