Java面試題

面試題

面向過(guò)程和面向?qū)ο蟮膮^(qū)別

面向過(guò)程和面向?qū)ο蟮闹饕獏^(qū)別在于思想方式和實(shí)現(xiàn)方法钥星。

面向過(guò)程重視步驟和函數(shù)级历,通過(guò)分解問(wèn)題并設(shè)計(jì)函數(shù)來(lái)解決問(wèn)題腥光;

面向?qū)ο髣t更注重對(duì)象和類之間的關(guān)系懒构,將程序中的各種元素組織成一個(gè)有機(jī)整體众羡,在實(shí)現(xiàn)上更加靈活和可擴(kuò)展勋颖。

同時(shí)嗦嗡,面向?qū)ο蟮某绦蚓哂懈叩膹?fù)用性、可維護(hù)性和可讀性饭玲。

類和對(duì)象的關(guān)系

類:定義了對(duì)象應(yīng)具有的特征和?為侥祭,類是對(duì)象的模板。

對(duì)象:擁有多個(gè)特征和?為的實(shí)體,對(duì)象是類的實(shí)例矮冬。

區(qū)別

  1. 抽象程度不同

類是一種抽象的數(shù)據(jù)結(jié)構(gòu)谈宛,它描述了一組對(duì)象的共同特征,包括屬性和方法等胎署。而對(duì)象則是類的具體化吆录,它包含了類定義的屬性值和方法實(shí)現(xiàn),是具體的實(shí)體琼牧。

  1. 內(nèi)容不同

類包含了屬性和方法的定義恢筝,但沒有具體的值或?qū)崿F(xiàn)。而對(duì)象則是具有這些屬性值和方法實(shí)現(xiàn)的實(shí)體巨坊,是一個(gè)具體的實(shí)例撬槽。

  1. 使用方式不同

類是一種模板或者藍(lán)圖,它用于創(chuàng)建對(duì)象趾撵、描述對(duì)象的屬性和行為等侄柔,是對(duì)實(shí)現(xiàn)進(jìn)行了封裝和抽象的結(jié)果。而對(duì)象則是類的具體實(shí)現(xiàn)鼓寺,通過(guò)對(duì)象可以直接訪問(wèn)類中定義的屬性和方法勋拟。

  1. 存儲(chǔ)位置不同

類通常在代碼中被定義,是靜態(tài)的妈候,存儲(chǔ)于磁盤上敢靡;而對(duì)象則是在程序運(yùn)行時(shí)創(chuàng)建的,存儲(chǔ)于內(nèi)存中苦银。

  1. 可變性不同

類是一種不可變的數(shù)據(jù)結(jié)構(gòu)啸胧,它定義了一組屬性和方法,但不能直接改變這些屬性和方法的定義幔虏。而對(duì)象則是可變的纺念,可以修改它們的屬性值或?qū)崿F(xiàn)方法。

綜上所述想括,類是一種描述共同特征的抽象數(shù)據(jù)類型陷谱,而對(duì)象是類的一個(gè)具體實(shí)例,包含了類定義的屬性值和方法實(shí)現(xiàn)瑟蜈。類和對(duì)象之間的關(guān)系是類定義了對(duì)象的共同特征烟逊,而對(duì)象實(shí)現(xiàn)了這些特征。兩者的使用方式铺根、存儲(chǔ)位置宪躯、可變性等方面也有所不同。

構(gòu)造方法的作用和特征

構(gòu)造方法是一種可以創(chuàng)建和初始化對(duì)象的特殊方法位迂,用于在對(duì)象創(chuàng)建時(shí)自動(dòng)調(diào)用访雪。

構(gòu)造方法與類同名详瑞,沒有返回值類型,而且可以有多個(gè)重載形式臣缀。

構(gòu)造方法的主要作用如下:

  1. 創(chuàng)建對(duì)象:構(gòu)造方法在對(duì)象實(shí)例化的過(guò)程中被自動(dòng)調(diào)用坝橡,用于為對(duì)象分配內(nèi)存空間并初始化其狀態(tài)。沒有構(gòu)造方法肝陪,就無(wú)法創(chuàng)建對(duì)象驳庭。

  2. 初始化對(duì)象:構(gòu)造方法可以對(duì)對(duì)象屬性進(jìn)行初始化,為對(duì)象賦予初始的狀態(tài)氯窍。這些屬性可以是類的成員變量或者方法內(nèi)部定義的局部變量饲常。

  3. 重載構(gòu)造方法:通過(guò)定義不同參數(shù)的構(gòu)造方法,可以實(shí)現(xiàn)不同的對(duì)象初始化方式狼讨,滿足不同的需求贝淤。

  4. 隱藏默認(rèn)構(gòu)造方法:如果沒有顯式定義構(gòu)造方法,編譯器會(huì)自動(dòng)生成一個(gè)默認(rèn)的構(gòu)造方法政供。但是播聪,這個(gè)默認(rèn)構(gòu)造方法并不一定符合要求,會(huì)導(dǎo)致代碼的不可預(yù)期性和安全性問(wèn)題布隔。因此离陶,通過(guò)定義顯式構(gòu)造方法可以隱藏默認(rèn)構(gòu)造方法。

構(gòu)造方法的特征如下:

  1. 構(gòu)造方法與類名相同衅檀,且沒有返回值類型招刨,包括void。

  2. 構(gòu)造方法可以有多個(gè)重載形式哀军,通過(guò)傳入不同的參數(shù)來(lái)初始化對(duì)象沉眶。

  3. 如果沒有顯示定義構(gòu)造方法,則編譯器會(huì)生成一個(gè)默認(rèn)的構(gòu)造方法杉适。

  4. 如果顯式定義了構(gòu)造方法谎倔,則需要手動(dòng)調(diào)用其他構(gòu)造方法。這就是構(gòu)造方法的重載猿推。

  5. 構(gòu)造方法只能在對(duì)象創(chuàng)建時(shí)被調(diào)用片习,不能像一般方法那樣被復(fù)用。

總之蹬叭,構(gòu)造方法是一種特殊的方法毯侦,其作用是創(chuàng)建和初始化Java對(duì)象。通過(guò)定義不同參數(shù)的構(gòu)造方法可以實(shí)現(xiàn)不同的對(duì)象初始化方式具垫,在Java編程中非常重要。

private试幽、默認(rèn)筝蚕、protected卦碾、public四個(gè)權(quán)限修飾符的作用

在Java中,訪問(wèn)修飾符(access modifiers)是指用來(lái)控制類起宽、變量和方法的可見性和訪問(wèn)權(quán)限的關(guān)鍵字洲胖。Java中有四個(gè)訪問(wèn)修飾符private、默認(rèn)坯沪、protected和public绿映,分別表示不同的訪問(wèn)級(jí)別和訪問(wèn)權(quán)限。

  1. private:私有訪問(wèn)修飾符腐晾,用于限制只有本類中才能訪問(wèn)該成員(屬性或方法)叉弦,其他類無(wú)法訪問(wèn)。一般用于保護(hù)對(duì)象的屬性藻糖,可以提高程序的安全性和封裝性淹冰。

  2. 默認(rèn):默認(rèn)訪問(wèn)修飾符,也稱為包訪問(wèn)修飾符(package-level access modifier)巨柒。在沒有顯式定義訪問(wèn)修飾符時(shí)樱拴,該成員默認(rèn)為默認(rèn)訪問(wèn)權(quán)限,只有在同一包中的類才能訪問(wèn)該成員洋满。

  3. protected:受保護(hù)訪問(wèn)修飾符晶乔,用于限制只有本類、子類和同一包中的其他類才能訪問(wèn)該成員牺勾。一般用于實(shí)現(xiàn)繼承和類方法的封裝正罢。

  4. public:公共訪問(wèn)修飾符,用于標(biāo)識(shí)該成員可以被任意類所訪問(wèn)禽最。在許多情況下腺怯,將方法和變量聲明為public不是很安全,因?yàn)檫@會(huì)導(dǎo)致類中的所有細(xì)節(jié)暴露給外部川无。

總之呛占,訪問(wèn)修飾符是Java中控制類、變量和方法可見性和訪問(wèn)權(quán)限的關(guān)鍵字懦趋。private晾虑、默認(rèn)、protected仅叫、public四個(gè)訪問(wèn)修飾符可以在Java程序中用來(lái)限定成員的訪問(wèn)級(jí)別和訪問(wèn)權(quán)限帜篇。在設(shè)計(jì)類時(shí),要根據(jù)具體情況選擇合適的訪問(wèn)修飾符诫咱,不僅能保證數(shù)據(jù)封裝和安全性笙隙,還能提高程序的可讀性和可維護(hù)性。

注意 :

訪問(wèn)權(quán)限修飾符都是成員修飾符,只能修飾成員不能修飾局部

default是默認(rèn)的,沒有顯示的通過(guò)其他訪問(wèn)權(quán)限修飾符進(jìn)行修飾,默認(rèn)通過(guò)default修飾

能夠用來(lái)修飾類的訪問(wèn)權(quán)限修飾符 : public | default

訪問(wèn)被protected修飾的成員

  1. 同包類下訪問(wèn)
  2. 不同包下的子類中,通過(guò)繼承關(guān)系訪問(wèn)

方法重載和方法重寫的區(qū)別

實(shí)現(xiàn)重載條件 :

  1. 一個(gè)類中的多個(gè)方法
  2. 方法名相同
  3. 參數(shù)列表不同|方法簽名不同 (參數(shù)類型坎缭、參數(shù)個(gè)數(shù)竟痰、參數(shù)順序)

方法重載的目的是為了提供更加靈活的方法調(diào)用方式签钩。在調(diào)用方法時(shí),編譯器會(huì)根據(jù)參數(shù)類型和數(shù)量自動(dòng)選擇最合適的方法坏快。方法重載的返回值類型可以相同也可以不同铅檩,但是不能僅僅是返回類型不同。

實(shí)現(xiàn)重寫的條件 :

  1. 兩個(gè)類中的兩個(gè)方法
  2. 繼承|實(shí)現(xiàn)關(guān)系
  3. 方法簽名相同

方法重寫的目的是為了改變父類方法的實(shí)現(xiàn)細(xì)節(jié)莽鸿,增強(qiáng)程序的可讀性和可維護(hù)性昧旨。當(dāng)程序調(diào)用子類中被重寫的方法時(shí),實(shí)際上執(zhí)行的是重寫后的子類方法祥得。

使用重寫前提需求:當(dāng)子類對(duì)從父類中所繼承的功能滿意,但是功能的實(shí)現(xiàn)不滿意的時(shí)候,在子類中重寫實(shí)現(xiàn)這個(gè)功能->重寫

在Java中兔沃,方法重載(overloading)和方法重寫(overriding)是兩種常用的面向?qū)ο缶幊谈拍睿鼈兙哂胁煌奶攸c(diǎn)和作用啃沪。

  1. 方法重載:是指在同一個(gè)類中定義多個(gè)方法粘拾,它們具有相同的方法名,但是參數(shù)列表不同(參數(shù)類型创千、參數(shù)個(gè)數(shù)缰雇、參數(shù)順序)。方法重載的目的是為了提供更加靈活的方法調(diào)用方式追驴。在調(diào)用方法時(shí)械哟,編譯器會(huì)根據(jù)參數(shù)類型和數(shù)量自動(dòng)選擇最合適的方法。方法重載的返回值類型可以相同也可以不同殿雪,但是不能僅僅是返回類型不同暇咆。

  2. 方法重寫:是指子類繼承父類后,重新定義該父類中的某個(gè)方法丙曙,使得子類擁有與父類相同的名稱爸业、參數(shù)列表和返回類型的方法。方法重寫的目的是為了改變父類方法的實(shí)現(xiàn)細(xì)節(jié)亏镰,增強(qiáng)程序的可讀性和可維護(hù)性扯旷。當(dāng)程序調(diào)用子類中被重寫的方法時(shí),實(shí)際上執(zhí)行的是重寫后的子類方法索抓。

區(qū)別:

  1. 方法重載是指同一個(gè)類中钧忽,方法名相同,但是參數(shù)列表不同逼肯,返回值類型可以相同也可以不同耸黑。而方法重寫是指子類重新定義父類中的方法,方法名篮幢、參數(shù)列表和返回值類型必須與父類完全一致大刊。

  2. 方法重載是編譯時(shí)多態(tài),即在編譯期確定該調(diào)用哪個(gè)方法三椿;而方法重寫是運(yùn)行時(shí)多態(tài)缺菌,即在程序運(yùn)行期間才能確定調(diào)用哪個(gè)方法曲尸。

  3. 方法重載主要用于提供不同的方法調(diào)用方式,增加代碼的靈活性男翰。方法重寫主要用于改變父類方法的實(shí)現(xiàn)細(xì)節(jié),擴(kuò)展程序的功能纽乱。

總之蛾绎,方法重載和方法重寫都是Java中常用的面向?qū)ο缶幊谈拍睿鼈兎謩e用于提供不同的方法調(diào)用方式和改變父類方法的實(shí)現(xiàn)細(xì)節(jié)鸦列。掌握它們的特點(diǎn)和使用場(chǎng)景租冠,可以讓你的Java程序更加靈活和可維護(hù)。

java.lang.Object類的六個(gè)常用方法的聲明并說(shuō)明其作用薯嗤。

  1. public boolean equals(Object obj)
    這個(gè)方法用于比較兩個(gè)對(duì)象是否相等顽爹。默認(rèn)情況下,equals()方法將比較兩個(gè)對(duì)象的引用地址是否相等骆姐,即是否為同一個(gè)對(duì)象镜粤。如果需要比較對(duì)象的值是否相等,則需要在子類中覆寫equals()方法玻褪。在覆寫時(shí)需要注意肉渴,需要滿足自反性、對(duì)稱性带射、傳遞性和一致性等特點(diǎn)同规。
  2. public int hashCode()
    這個(gè)方法返回當(dāng)前對(duì)象的哈希碼,哈希碼是根據(jù)對(duì)象的內(nèi)部信息生成的一個(gè)整數(shù)窟社,可以用于快速查找對(duì)象券勺,比如在集合類中使用。hashCode()方法的默認(rèn)實(shí)現(xiàn)會(huì)返回對(duì)象的內(nèi)存地址灿里,但是可以在子類中重新定義关炼。
  3. public String toString()
    這個(gè)方法返回表示該對(duì)象的字符串,通常建議程序員重載這個(gè)方法钠四,以便打印對(duì)象的屬性或其他有用信息盗扒。
  4. public final native Class<?> getClass()
    這個(gè)方法返回對(duì)象所屬的類Class對(duì)象。由于Object是所有類的父類缀去,因此在Java中每個(gè)對(duì)象都可以調(diào)用getClass()方法侣灶。這個(gè)方法是用本地代碼實(shí)現(xiàn)的。
  5. public final void notify()
  6. public final void notifyAll()
    這兩個(gè)方法是用于線程間通信的方法缕碎,用于激活處于等待狀態(tài)下的線程褥影。notify()方法隨機(jī)喚醒一個(gè)處于等待狀態(tài)的線程,而notifyAll()方法喚醒所有處于等待狀態(tài)的線程咏雌,讓它們重新競(jìng)爭(zhēng)執(zhí)行權(quán)凡怎。

繼承條件下子類構(gòu)造方法的執(zhí)行過(guò)程

1校焦、在執(zhí)行子類構(gòu)造方法之前,會(huì)隱式地調(diào)用父類的無(wú)參構(gòu)造方法统倒,以保證父類的實(shí)例變量可以被正確初始化寨典。如果父類沒有無(wú)參構(gòu)造方法,并且在子類中沒有顯式調(diào)用父類的其他構(gòu)造方法房匆,則編譯器會(huì)報(bào)錯(cuò)耸成。

2、執(zhí)行子類構(gòu)造方法浴鸿,子類構(gòu)造方法可以調(diào)用子類自身的其他構(gòu)造方法或者父類的有參構(gòu)造方法井氢。

3、如果子類構(gòu)造方法調(diào)用了子類自身的其他構(gòu)造方法岳链,則該構(gòu)造方法必須是子類中定義的其它構(gòu)造方法的第一個(gè)語(yǔ)句花竞,否則編譯器會(huì)報(bào)錯(cuò)。4掸哑、如果子類構(gòu)造方法顯式地調(diào)用了父類的有參構(gòu)造方法约急,則需要使用關(guān)鍵字super顯式調(diào)用,同時(shí)指定父類構(gòu)造方法所需要的參數(shù)举户。調(diào)用父類構(gòu)造方法的語(yǔ)句也必須是子類構(gòu)造方法中的第一條語(yǔ)句烤宙。如果子類構(gòu)造方法中沒有顯式調(diào)用父類的構(gòu)造方法,則編譯器會(huì)隱式地調(diào)用父類的無(wú)參構(gòu)造方法俭嘁。

4躺枕、子類構(gòu)造方法執(zhí)行完畢后,將返回一個(gè)新創(chuàng)建的子類對(duì)象供填。

super關(guān)鍵字的作用和使用

調(diào)用父類的構(gòu)造方法:在子類構(gòu)造方法中拐云,可以使用super關(guān)鍵字來(lái)調(diào)用父類構(gòu)造方法,以保證父類的實(shí)例變量能夠被正確初始化近她。使用super關(guān)鍵字調(diào)用父類構(gòu)造方法的語(yǔ)法super(參數(shù)列表)叉瘩。

訪問(wèn)父類的成員變量:在子類中,可以使用super關(guān)鍵字來(lái)引用父類中的成員變量粘捎。這樣可以避免子類和父類擁有同名變量時(shí)的命名沖突問(wèn)題薇缅。使用super關(guān)鍵字訪問(wèn)父類成員變量的語(yǔ)法為super.父類成員變量名。

調(diào)用父類的方法:在子類中攒磨,可以使用super關(guān)鍵字來(lái)調(diào)用父類中的方法泳桦。這樣可以避免子類和父類擁有同名方法時(shí)的命名沖突問(wèn)題。使用super關(guān)鍵字調(diào)用父類方法的語(yǔ)法為super.父類方法名(參數(shù)列表)娩缰。

super關(guān)鍵字必須出現(xiàn)在子類方法或構(gòu)造方法的第一條語(yǔ)句上灸撰。

==和equals()的聯(lián)系和區(qū)別

==比較的是兩個(gè)對(duì)象的引用地址是否相等,也就是判斷兩個(gè)對(duì)象是否為同一個(gè)實(shí)例。如果兩個(gè)對(duì)象的引用地址相等浮毯,則==返回true完疫,否則返回false。

equals()比較的是兩個(gè)對(duì)象的內(nèi)容是否相等债蓝。如果兩個(gè)對(duì)象的屬性值相等壳鹤,則equals()返回true,否則返回false饰迹。

多態(tài)的含義和作用

多態(tài)的含義是指同一種類型的對(duì)象器虾,在不同的情況下會(huì)表現(xiàn)出不同的形態(tài)和行為特征。具體來(lái)說(shuō)蹦锋,就是盡可能的通過(guò)抽象類型、接口或基類定義統(tǒng)一的數(shù)據(jù)類型欧芽,使得不同的子類可以通過(guò)繼承莉掂、實(shí)現(xiàn)共享并重用基類的代碼,并且在運(yùn)行時(shí)根據(jù)實(shí)際情況動(dòng)態(tài)選擇相應(yīng)的子類千扔、實(shí)現(xiàn)或?qū)ο笤髅睿赃_(dá)到靈活、可擴(kuò)展和高效的編程目的曲楚。
多態(tài)的作用在于:

  1. 簡(jiǎn)化程序的設(shè)計(jì)和維護(hù):通過(guò)基類或接口的抽象定義厘唾,將對(duì)象從具體實(shí)現(xiàn)解耦,易于擴(kuò)展和修改龙誊;
  2. 提高代碼的復(fù)用和可讀性:多個(gè)子類可以共享和重用父類的方法和屬性抚垃,避免了重復(fù)代碼的產(chǎn)生,同時(shí)也更方便于其他開發(fā)者理解和使用代碼趟大;
  3. 實(shí)現(xiàn)程序的松耦合和高內(nèi)聚:不同的對(duì)象之間通過(guò)統(tǒng)一的接口和基類保持松耦合的聯(lián)系鹤树,同時(shí)具備自己獨(dú)立的內(nèi)部實(shí)現(xiàn),即高內(nèi)聚性逊朽;
  4. 支持動(dòng)態(tài)綁定和運(yùn)行時(shí)多態(tài):程序可以根據(jù)實(shí)際情況動(dòng)態(tài)地選擇和調(diào)用對(duì)象的方法和屬性罕伯,提高了程序的靈活性和可擴(kuò)展性。

向上轉(zhuǎn)型和向下轉(zhuǎn)型

向上轉(zhuǎn)型:將子類對(duì)象轉(zhuǎn)換為父類類型叽讳,這樣就可以使用父類變量來(lái)代替子類變量追他。向上轉(zhuǎn)型是自動(dòng)的,也就是說(shuō)不需要強(qiáng)制類型轉(zhuǎn)換岛蚤,因?yàn)樽宇惱^承父類邑狸,子類對(duì)象可以直接賦值給父類變量。

較兩個(gè)對(duì)象是否相等灭美。默認(rèn)情況下推溃,equals()方法將比較兩個(gè)對(duì)象的引用地址是否相等,即是否為同一個(gè)對(duì)象。如果需要比較對(duì)象的值是否相等铁坎,則需要在子類中覆寫equals()方法蜂奸。在覆寫時(shí)需要注意,需要滿足自反性硬萍、對(duì)稱性扩所、傳遞性和一致性等特點(diǎn)。

  1. public int hashCode()
    這個(gè)方法返回當(dāng)前對(duì)象的哈希碼朴乖,哈希碼是根據(jù)對(duì)象的內(nèi)部信息生成的一個(gè)整數(shù)祖屏,可以用于快速查找對(duì)象,比如在集合類中使用买羞。hashCode()方法的默認(rèn)實(shí)現(xiàn)會(huì)返回對(duì)象的內(nèi)存地址袁勺,但是可以在子類中重新定義。
  2. public String toString()
    這個(gè)方法返回表示該對(duì)象的字符串畜普,通常建議程序員重載這個(gè)方法期丰,以便打印對(duì)象的屬性或其他有用信息。
  3. public final native Class<?> getClass()
    這個(gè)方法返回對(duì)象所屬的類Class對(duì)象吃挑。由于Object是所有類的父類钝荡,因此在Java中每個(gè)對(duì)象都可以調(diào)用getClass()方法。這個(gè)方法是用本地代碼實(shí)現(xiàn)的舶衬。
  4. public final void notify()
  5. public final void notifyAll()
    這兩個(gè)方法是用于線程間通信的方法埠通,用于激活處于等待狀態(tài)下的線程。notify()方法隨機(jī)喚醒一個(gè)處于等待狀態(tài)的線程逛犹,而notifyAll()方法喚醒所有處于等待狀態(tài)的線程端辱,讓它們重新競(jìng)爭(zhēng)執(zhí)行權(quán)。

繼承條件下子類構(gòu)造方法的執(zhí)行過(guò)程

1虽画、在執(zhí)行子類構(gòu)造方法之前掠手,會(huì)隱式地調(diào)用父類的無(wú)參構(gòu)造方法,以保證父類的實(shí)例變量可以被正確初始化狸捕。如果父類沒有無(wú)參構(gòu)造方法喷鸽,并且在子類中沒有顯式調(diào)用父類的其他構(gòu)造方法,則編譯器會(huì)報(bào)錯(cuò)灸拍。

2做祝、執(zhí)行子類構(gòu)造方法,子類構(gòu)造方法可以調(diào)用子類自身的其他構(gòu)造方法或者父類的有參構(gòu)造方法鸡岗。

3混槐、如果子類構(gòu)造方法調(diào)用了子類自身的其他構(gòu)造方法,則該構(gòu)造方法必須是子類中定義的其它構(gòu)造方法的第一個(gè)語(yǔ)句轩性,否則編譯器會(huì)報(bào)錯(cuò)声登。4、如果子類構(gòu)造方法顯式地調(diào)用了父類的有參構(gòu)造方法,則需要使用關(guān)鍵字super顯式調(diào)用悯嗓,同時(shí)指定父類構(gòu)造方法所需要的參數(shù)件舵。調(diào)用父類構(gòu)造方法的語(yǔ)句也必須是子類構(gòu)造方法中的第一條語(yǔ)句。如果子類構(gòu)造方法中沒有顯式調(diào)用父類的構(gòu)造方法脯厨,則編譯器會(huì)隱式地調(diào)用父類的無(wú)參構(gòu)造方法铅祸。

4、子類構(gòu)造方法執(zhí)行完畢后合武,將返回一個(gè)新創(chuàng)建的子類對(duì)象临梗。

super關(guān)鍵字的作用和使用

調(diào)用父類的構(gòu)造方法:在子類構(gòu)造方法中,可以使用super關(guān)鍵字來(lái)調(diào)用父類構(gòu)造方法稼跳,以保證父類的實(shí)例變量能夠被正確初始化盟庞。使用super關(guān)鍵字調(diào)用父類構(gòu)造方法的語(yǔ)法super(參數(shù)列表)。

訪問(wèn)父類的成員變量:在子類中汤善,可以使用super關(guān)鍵字來(lái)引用父類中的成員變量茫经。這樣可以避免子類和父類擁有同名變量時(shí)的命名沖突問(wèn)題。使用super關(guān)鍵字訪問(wèn)父類成員變量的語(yǔ)法為super.父類成員變量名萎津。

調(diào)用父類的方法:在子類中,可以使用super關(guān)鍵字來(lái)調(diào)用父類中的方法抹镊。這樣可以避免子類和父類擁有同名方法時(shí)的命名沖突問(wèn)題锉屈。使用super關(guān)鍵字調(diào)用父類方法的語(yǔ)法為super.父類方法名(參數(shù)列表)。

super關(guān)鍵字必須出現(xiàn)在子類方法或構(gòu)造方法的第一條語(yǔ)句上垮耳。

==和equals()的聯(lián)系和區(qū)別

==比較的是兩個(gè)對(duì)象的引用地址是否相等颈渊,也就是判斷兩個(gè)對(duì)象是否為同一個(gè)實(shí)例。如果兩個(gè)對(duì)象的引用地址相等终佛,則==返回true俊嗽,否則返回false。

equals()比較的是兩個(gè)對(duì)象的內(nèi)容是否相等铃彰。如果兩個(gè)對(duì)象的屬性值相等绍豁,則equals()返回true,否則返回false牙捉。

多態(tài)的含義和作用

多態(tài)的含義是指同一種類型的對(duì)象竹揍,在不同的情況下會(huì)表現(xiàn)出不同的形態(tài)和行為特征。具體來(lái)說(shuō)邪铲,就是盡可能的通過(guò)抽象類型芬位、接口或基類定義統(tǒng)一的數(shù)據(jù)類型,使得不同的子類可以通過(guò)繼承带到、實(shí)現(xiàn)共享并重用基類的代碼昧碉,并且在運(yùn)行時(shí)根據(jù)實(shí)際情況動(dòng)態(tài)選擇相應(yīng)的子類、實(shí)現(xiàn)或?qū)ο螅赃_(dá)到靈活被饿、可擴(kuò)展和高效的編程目的四康。
多態(tài)的作用在于:

  1. 簡(jiǎn)化程序的設(shè)計(jì)和維護(hù):通過(guò)基類或接口的抽象定義,將對(duì)象從具體實(shí)現(xiàn)解耦锹漱,易于擴(kuò)展和修改箭养;
  2. 提高代碼的復(fù)用和可讀性:多個(gè)子類可以共享和重用父類的方法和屬性,避免了重復(fù)代碼的產(chǎn)生哥牍,同時(shí)也更方便于其他開發(fā)者理解和使用代碼毕泌;
  3. 實(shí)現(xiàn)程序的松耦合和高內(nèi)聚:不同的對(duì)象之間通過(guò)統(tǒng)一的接口和基類保持松耦合的聯(lián)系,同時(shí)具備自己獨(dú)立的內(nèi)部實(shí)現(xiàn)嗅辣,即高內(nèi)聚性撼泛;
  4. 支持動(dòng)態(tài)綁定和運(yùn)行時(shí)多態(tài):程序可以根據(jù)實(shí)際情況動(dòng)態(tài)地選擇和調(diào)用對(duì)象的方法和屬性,提高了程序的靈活性和可擴(kuò)展性澡谭。

向上轉(zhuǎn)型和向下轉(zhuǎn)型

向上轉(zhuǎn)型:將子類對(duì)象轉(zhuǎn)換為父類類型愿题,這樣就可以使用父類變量來(lái)代替子類變量。向上轉(zhuǎn)型是自動(dòng)的蛙奖,也就是說(shuō)不需要強(qiáng)制類型轉(zhuǎn)換潘酗,因?yàn)樽宇惱^承父類,子類對(duì)象可以直接賦值給父類變量雁仲。

向下轉(zhuǎn)型:將父類對(duì)象轉(zhuǎn)換為子類類型仔夺,這需要使用強(qiáng)制類型轉(zhuǎn)換,并且只有當(dāng)父類對(duì)象本身就是對(duì)應(yīng)的子類對(duì)象時(shí)才能成功轉(zhuǎn)換攒砖。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缸兔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吹艇,更是在濱河造成了極大的恐慌惰蜜,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件受神,死亡現(xiàn)場(chǎng)離奇詭異抛猖,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)鼻听,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門樟结,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人精算,你說(shuō)我怎么就攤上這事瓢宦。” “怎么了灰羽?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵驮履,是天一觀的道長(zhǎng)鱼辙。 經(jīng)常有香客問(wèn)我,道長(zhǎng)玫镐,這世上最難降的妖魔是什么倒戏? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮恐似,結(jié)果婚禮上杜跷,老公的妹妹穿的比我還像新娘。我一直安慰自己矫夷,他們只是感情好葛闷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著双藕,像睡著了一般淑趾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上忧陪,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天扣泊,我揣著相機(jī)與錄音,去河邊找鬼嘶摊。 笑死延蟹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叶堆。 我是一名探鬼主播阱飘,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蹂空!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起果录,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤上枕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后弱恒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辨萍,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年返弹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锈玉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡义起,死狀恐怖拉背,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情默终,我是刑警寧澤椅棺,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布犁罩,位于F島的核電站,受9級(jí)特大地震影響两疚,放射性物質(zhì)發(fā)生泄漏床估。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一诱渤、第九天 我趴在偏房一處隱蔽的房頂上張望丐巫。 院中可真熱鬧,春花似錦勺美、人聲如沸递胧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谓着。三九已至,卻和暖如春坛掠,著一層夾襖步出監(jiān)牢的瞬間赊锚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工屉栓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舷蒲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓友多,卻偏偏與公主長(zhǎng)得像牲平,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子域滥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. 面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別 面向過(guò)程 :面向過(guò)程性能比面向?qū)ο蟾摺?因?yàn)轭愓{(diào)用時(shí)需要實(shí)例化纵柿,開銷比較大,比較消...
    cbw100閱讀 347評(píng)論 0 2
  • 接口/抽象類意義規(guī)范启绰、擴(kuò)展昂儒、回調(diào)為其子類提供一個(gè)公共的類型 封裝子類中得重復(fù)內(nèi)容 定義抽象方法,子類雖然有不同的實(shí)...
    MigrationUK閱讀 2,165評(píng)論 1 28
  • 一委可、JavaSE 1渊跋、面向?qū)ο蟮奶卣饔心男┓矫?抽象:抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無(wú)關(guān)的那些方面,以便更充分地...
    月生89閱讀 930評(píng)論 0 0
  • 數(shù)組和集合的區(qū)別 一着倾、數(shù)組聲明了它容納的元素的類型拾酝,而集合不聲明。 二卡者、數(shù)組是靜態(tài)的蒿囤,一個(gè)數(shù)組實(shí)例具有固定的大小,...
    冰川_閱讀 5,430評(píng)論 1 5
  • 1 以下屬于面向?qū)ο蟮奶卣鞯氖牵ǎ?答:面向?qū)ο蟮奶卣髦饕牵悍庋b崇决、繼承蟋软、多態(tài)褂萧。而多態(tài)的實(shí)現(xiàn)主要是函數(shù)方法的重載和...
    apollooo閱讀 6,361評(píng)論 1 2