什么是構(gòu)造方法?構(gòu)造方法有那些特點?
構(gòu)造方法,是一種特殊的方法,它是一個與類同名的方法。對象的創(chuàng)建就是通過構(gòu)造方法來完成,其功能主要是完成對象的初始化。當(dāng)類實例化一個對象時會自動調(diào)用構(gòu)造方法。構(gòu)造方法和其他方法一樣也可以重載。
特點:
- 構(gòu)造方法的方法名與類名一致
- 構(gòu)造方法沒有返回值
- 創(chuàng)建對象時,通過new關(guān)鍵字來調(diào)用構(gòu)造方法
重載和重寫的區(qū)別?
名稱 | 重載(overload) | 重寫(override) |
---|---|---|
范圍 | 同一類中 | 父類和子類 |
方法名 | 必須相同 | 必須相同 |
參數(shù)列表 |
類型、個數(shù)、順序 至少有一個不同 |
必須與父類相同 |
返回類型 | 可以不同 | 子類重寫的方法,返回類型和父類一樣或者是父類的子類
|
修飾符 | 可以不同 | 子類方法不能縮小父類方法的訪問范圍
|
抽象類和接口的區(qū)別?
接口抽象類不同點
接口的特點:
- 接口中只包括虛方法的定義,只有聲明定義,沒有函數(shù)實現(xiàn)? (抽象類可以有實現(xiàn))
- 接口類中可以包括屬性、事件、索引器等,但不能包括字段? (抽象類可以有字段)
- 接口類屬于多繼承? ? ? ?(抽象類單繼承,符合類的特點)
- 接口可以支持回調(diào) ?。ǔ橄箢惒恢С只卣{(diào))
- 繼承了接口的類必須全部實現(xiàn)接口的方法
抽象類的特點:
- 抽象類不能被實例化,也不能被密封
- 抽象類中的方法,在派生類中要有實現(xiàn),沒有實現(xiàn)的話,這個類就得是抽象類,在由這個類的派生類實現(xiàn),方法得標(biāo)記為抽象方法!
- 派生類中實現(xiàn) 基類的抽象方法,必須使用override?修飾符
接口抽象類相同點
- 不能實例化,由派生類來實現(xiàn)
- 都需要子類實現(xiàn)父類的方法
?static關(guān)鍵字用法
static關(guān)鍵字修飾類
在Java中,static一般用來修飾成員變量或者函數(shù)。但有一種特殊用法是用static修飾內(nèi)部類(普通類是不允許聲明為靜態(tài)的,只有內(nèi)部類才可以),被static修飾的內(nèi)部類可以直接作為一個普通類來使用,而不需實例一個外部類。
static關(guān)鍵字修飾方法
static修飾的方法被稱之為靜態(tài)方法,也叫類方法
加Static修飾的方法與不加Static修飾的方法的區(qū)別
- 加static的方法,可以通過類名直接訪問,也可以通過對象名訪問;加了static的方法,不能再內(nèi)部寫this,因為直接用類名.方法的時候,沒有當(dāng)前對象
- 而不加static只能通過對象名訪問加了static的方法,不能在內(nèi)部訪問非static的屬性和行為,因為在靜態(tài)方法的內(nèi)部無法確定非static的內(nèi)容屬于那個對象,它是通過類名調(diào)用
static關(guān)鍵字修飾變量
被static修飾的成員變量屬于類,不屬于某個對象(也就是說:多個對象訪問或修改static修飾的成員變量時,其中一個對象將static成員變量進(jìn)行了修改,其他的對象的static成員變量值跟著改變,即多個對象共享同一個static成員變量 )
被static修飾的成員,可以通過類名直接訪問
在靜態(tài)方法中,不能訪問非靜態(tài)的內(nèi)容(變量),不能使用this/super;非靜態(tài)中,可以訪問靜態(tài)中的變量
static修飾代碼塊
靜態(tài)代碼塊在非靜態(tài)代碼塊之前執(zhí)行(靜態(tài)代碼塊—>非靜態(tài)代碼塊—>構(gòu)造方法)。
靜態(tài)代碼塊只在第一次new執(zhí)行一次,之后不再執(zhí)行,而非靜態(tài)代碼塊在每new一次就執(zhí)行一次。非靜態(tài)代碼塊可在普通方法中定義(不過作用不大);而靜態(tài)代碼塊不行。
final關(guān)鍵字用法
用來修飾一個類;
當(dāng) final 關(guān)鍵字用來修飾一個類的時候,表明這個類不能有任何的子類,也就是說這個類不能被繼承。
final類中的所有成員方法都會被隱式地指定為final方法,也就是說一個類如果是final的,那么其中所有的成員方法都無法進(jìn)行覆蓋重寫
用來修飾一個方法;
當(dāng) final 關(guān)鍵字用來修飾一個方法的時候,這個方法就是最終方法,也就是不能被覆蓋重寫。
用來修飾一個局部變量;
一旦使用 final 用來修飾局部變量,那么這個變量就不能進(jìn)行更改「一次賦值,終生不變」。
- 對于基本類型來說,不可變說的是變量當(dāng)中的數(shù)據(jù)不可改變;
- 對于引用類型來說,不可變說的是變量當(dāng)中的地址值不可改變。
用來修飾一個成員變量
? ? 對于成員變量來說,如果使用 final 關(guān)鍵字修飾,那么這個變量也照樣是不可變。
- 由于成員變量具有默認(rèn)值,所以用了 final 之后必須手動賦值,不會再給默認(rèn)值了;
- 對于 final 的成員變量,要么使用直接賦值,要么通過構(gòu)造方法賦值,二者選其一;
- 必須保證類當(dāng)中所有重載的構(gòu)造方法都最終會對 final 的成員變量進(jìn)行賦值。
什么是面型對象 ?
是一種編程思想,它的核心概念是“對象”?!皩ο蟆笔侵妇哂刑囟▽傩院托袨榈膶嶓w,能夠接收消息、處理消息并返回結(jié)果。在面向?qū)ο蟮木幊陶Z言中,所有的程序都是由多個對象組成的。文章來源:http://www.zghlxwxcb.cn/news/detail-836175.html
面向?qū)ο蟮木幊陶Z言具有三個基本概念:封裝、繼承和多態(tài)。文章來源地址http://www.zghlxwxcb.cn/news/detail-836175.html
- 封裝:即隱藏對象的屬性和實現(xiàn)細(xì)節(jié)
- 繼承:通過子類繼承父類,提高代碼的擴(kuò)展性
- 多態(tài):提高代碼的靈活性,降低耦合性
到了這里,關(guān)于Java常見面試題---面向?qū)ο笃奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!