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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java复制的函数会报错,2 面试题之面向对象

發(fā)布時(shí)間:2023/12/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java复制的函数会报错,2 面试题之面向对象 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大綱:

一、兩個(gè)重要概念

① 請(qǐng)說(shuō)明類和對(duì)象的區(qū)別

類是對(duì)某一類實(shí)物的描述,是抽象的;對(duì)象是一個(gè)實(shí)實(shí)在在的個(gè)體,是類的一個(gè)實(shí)例;

② 解釋一下什么是類加載機(jī)制、雙親委派模型,好處是什么?

類加載機(jī)制:

雙親委派模型:

某個(gè)特定的類加載器在接到加載類的請(qǐng)求時(shí),首先將加載任務(wù)委托給父類加載器,依次遞歸,如果父類加載器可以完成類加載任務(wù),就成功返回;

只有父類加載器無(wú)法完成此加載任務(wù)時(shí),才自己去完成。

好處:

二、java類及類的成員

① 重寫(Overriding)與重載(Overloading)的區(qū)別?

重載:重載指的是同一個(gè)類中的兩個(gè)方法,方法名相同,參數(shù)列表(參數(shù)的類型、個(gè)數(shù)、順序)不同;對(duì)返回值類型沒有要求;

重寫:重寫發(fā)生在子類與父類之間,子類重寫父類的方法,要求與被重寫的方法的參數(shù)列表和返回值相同;

具體不同:

1 重寫與重載都是實(shí)現(xiàn)多態(tài)的方式,區(qū)別在于重載實(shí)現(xiàn)的是編譯時(shí)的多態(tài),重寫實(shí)現(xiàn)的是運(yùn)行時(shí)的多態(tài);(在了解下)

2 重寫后,子類方法的訪問(wèn)修飾權(quán)限不能小于父類的訪問(wèn)修飾權(quán)限;

3 重寫后,子類不能比父類被重寫方法聲明更多的異常;

② 什么是構(gòu)造函數(shù)?什么是構(gòu)造函數(shù)重載?什么是復(fù)制構(gòu)造函數(shù)?

構(gòu)造函數(shù)(構(gòu)造器):

當(dāng)新對(duì)象被創(chuàng)建的時(shí)候,構(gòu)造函數(shù)會(huì)被調(diào)用。每一個(gè)類都有構(gòu)造函數(shù)。在程序中沒有給類提供構(gòu)造函數(shù)的情況下,Java編譯器會(huì)為這個(gè)類創(chuàng)建一個(gè)默認(rèn)的構(gòu)造函數(shù) 。

構(gòu)造函數(shù)重載:

java中構(gòu)造函數(shù)的重載和方法重載很相似。可以為一個(gè)類創(chuàng)建多個(gè)構(gòu)造函數(shù)。每一個(gè)構(gòu)造函數(shù)都必須有他唯一的參數(shù)列表。

復(fù)制構(gòu)造函數(shù):

java不支持像C++中那樣的復(fù)制構(gòu)造函數(shù) , 這個(gè)不同點(diǎn)是因?yàn)槿绻悴蛔约簩憳?gòu)造方法的情況下,Java不會(huì)創(chuàng)建默認(rèn)的復(fù)制構(gòu)造方法。

三、面向?qū)ο蟮娜筇卣?/p>

① 面向?qū)ο蟮奶卣?#xff0c;解釋下?

具體的注意點(diǎn)說(shuō)明:

封裝性:我們可以將類的屬性私有化, 只有通過(guò)公共的get/set方法才能進(jìn)行訪問(wèn),在get/set方法中我們可以對(duì)內(nèi)部邏輯進(jìn)行封裝處理,外部的調(diào)用方不必關(guān)心我們的處理邏輯。

繼承性:

1 java不支持多繼承;

2 類中的構(gòu)造函數(shù)不能被繼承;如果構(gòu)造函數(shù)被private修飾 ,那么該類就不能被其他類繼承;

3 方法的重寫;

多態(tài)性:

1 方法的重載(與重寫);

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

參考鏈接:https://www.cnblogs.com/liyanyan665/p/11198602.html

四、java關(guān)鍵字

static關(guān)鍵字:

① 是否可以在static環(huán)境中訪問(wèn)非static變量?

② 解釋一下static關(guān)鍵字,java中是否可以重寫一個(gè)private或者是static的方法?

static關(guān)鍵字:static是表示靜態(tài)的意思,它可用來(lái)修飾成員變量和成員函數(shù),被靜態(tài)修飾的成員函數(shù)只能訪問(wèn)靜態(tài)成員,

不能訪問(wèn)非靜態(tài)成員。靜態(tài)是隨著類的加載而加載,因此可以直接用類進(jìn)行訪問(wèn)。

private或者是static的方法都不能被重寫:

覆蓋,也就是我們常說(shuō)的重寫,是子類繼承父類,且子類中的方法和父類中的方法,方法名、參數(shù)列表和返回值都相同。

private修飾的方法,不能被繼承,所以也不存在重寫(覆蓋);

static修飾的方法,可以被繼承,但不能被重寫。 因?yàn)榉椒ǜ采w是基于運(yùn)行時(shí)動(dòng)態(tài)綁定的,而static方法是編譯時(shí)靜態(tài)綁定的。static方法跟類的任何實(shí)例都不相關(guān),所以概念上不適用。

③ 靜態(tài)與非靜態(tài)的區(qū)別?

這里的靜態(tài),指以static關(guān)鍵字修飾的,包括類,方法,塊,字段。靜態(tài)變量和靜態(tài)方法都屬于靜態(tài)對(duì)象非靜態(tài),指沒有用static 修飾的。

靜態(tài)有一些特點(diǎn):

1.全局唯一,任何一次的修改都是全局性的影響

2.只加載一次,優(yōu)先于非靜態(tài)

3.使用方式上不依賴于實(shí)例對(duì)象。直接用 類名.靜態(tài)方法名? 或者? 類名.靜態(tài)變量名就可引用并且直接可以修改其屬性值,不用get和set方法。

4.生命周期屬于類級(jí)別,從JVM 加載開始到JVM卸載結(jié)束。

5.static final用來(lái)修飾成員變量和成員方法,可簡(jiǎn)單理解為“全局常量”。對(duì)于變量,表示一旦給值就不可修改;對(duì)于方法,表示不可覆蓋。

6.靜態(tài)方法和靜態(tài)變量創(chuàng)建后始終使用同一塊內(nèi)存。

7.靜態(tài)方法優(yōu)點(diǎn)是效率高,缺點(diǎn)是不自動(dòng)進(jìn)行銷毀。

final關(guān)鍵字:

④ 說(shuō)明一下final、finally、finalize的區(qū)別?

final用于聲明屬性,方法和類,分別表示屬性不可交變,方法不可覆蓋,類不可繼承。

finally是異常處理語(yǔ)句結(jié)構(gòu)的一部分,表示總是執(zhí)行。

finalize是Object類的一個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會(huì)調(diào)用被回收對(duì)象的此方法,供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文件等。

⑤ 說(shuō)明一下final怎么用的?

五、其他知識(shí)點(diǎn)

① 請(qǐng)列舉你知道的Object類的方法并簡(jiǎn)要說(shuō)明

Object()默認(rèn)構(gòu)造方法。

clone() 創(chuàng)建并返回此對(duì)象的一個(gè)副本。

equals(Object obj) 指示某個(gè)其他對(duì)象是否與此對(duì)象“相等”。

finalize()當(dāng)垃圾回收器確定不存在對(duì)該對(duì)象的更多引用時(shí),由對(duì)象的垃圾回收器調(diào)用此方法。

getClass()返回一個(gè)對(duì)象的運(yùn)行時(shí)類。

hashCode()返回該對(duì)象的哈希碼值。

notify()喚醒在此對(duì)象監(jiān)視器上等待的單個(gè)線程。

notifyAll()喚醒在此對(duì)象監(jiān)視器上等待的所有線程。

toString()返回該對(duì)象的字符串表示。

wait()導(dǎo)致當(dāng)前的線程等待,直到其他線程調(diào)用此對(duì)象的 notify() 方法或 notifyAll() 方法。

wait(long timeout)導(dǎo)致當(dāng)前的線程等待,直到其他線程調(diào)用此對(duì)象的 notify() 方法或 notifyAll() 方法,或者超過(guò)指定的時(shí)間量。

wait(long timeout, int nanos) 導(dǎo)致當(dāng)前的線程等待,直到其他線程調(diào)用此對(duì)象的 notify() 方法或 notifyAll() 方法,或者其他某個(gè)線程中斷當(dāng)前線程,或者已超過(guò)某個(gè)實(shí)際時(shí)間量。

六、抽象類和接口

① 抽象類和接口的區(qū)別?

抽象類:

1 抽象類必須在類前用abstract關(guān)鍵字修飾。如果一個(gè)類中有抽象方法,那么這個(gè)類也是抽象的;

2 子類必須實(shí)現(xiàn)抽象類中的抽象方法,如果有未實(shí)現(xiàn)的,那么子類也是抽象類,必須用 abstract 修飾 ;

3 抽象類默認(rèn)的權(quán)限修飾符為public,可以定義為 public 或 procted,如果定義為 private,那么子類則無(wú)法繼承;

4? 抽象類不能創(chuàng)建對(duì)象, 抽象類就是為了繼承而存在的;

接口( interface ):

1 接口中的變量會(huì)被隱式地指定為public static final變量(并且只能是public static final變量,用private修飾會(huì)報(bào)編譯錯(cuò)誤);

2 接口中的方法會(huì)被隱式地指定為public abstract方法且只能是public abstract方法(用其他關(guān)鍵字,比如private、protected、static、 final等修飾會(huì)報(bào)編譯錯(cuò)誤);

3 接口中所有的方法不能有具體的實(shí)現(xiàn),也就是說(shuō),接口中的方法必須都是抽象方法;

區(qū)別:

1 一個(gè)類只能繼承一個(gè)抽象類,而一個(gè)類卻可以實(shí)現(xiàn)多個(gè)接口;

2 抽象類可以提供成員方法的實(shí)現(xiàn)細(xì)節(jié),而接口中只能存在public abstract 方法;

3 抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是public static final類型;

4 接口中不能含有靜態(tài)代碼塊以及靜態(tài)方法,而抽象類可以有靜態(tài)代碼塊和靜態(tài)方法;(java 8開始,接口中可以有靜態(tài)方法)

② java是否支持多繼承?

Java中類不支持多繼承,只支持單繼承(即一個(gè)類只有一個(gè)父類)。

但是java中的接口支持多繼承,即一個(gè)子接口可以有多個(gè)父接口。(接口的作用是用來(lái)擴(kuò)展對(duì)象的功能,一個(gè)子接口繼承多個(gè)父接口,說(shuō)明子接口擴(kuò)展了多個(gè)功能,當(dāng)類實(shí)現(xiàn)接口時(shí),類就擴(kuò)展了相應(yīng)的功能)。

總結(jié)

以上是生活随笔為你收集整理的java复制的函数会报错,2 面试题之面向对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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