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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

大綱:

一、兩個重要概念

① 請說明類和對象的區別

類是對某一類實物的描述,是抽象的;對象是一個實實在在的個體,是類的一個實例;

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

類加載機制:

雙親委派模型:

某個特定的類加載器在接到加載類的請求時,首先將加載任務委托給父類加載器,依次遞歸,如果父類加載器可以完成類加載任務,就成功返回;

只有父類加載器無法完成此加載任務時,才自己去完成。

好處:

二、java類及類的成員

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

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

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

具體不同:

1 重寫與重載都是實現多態的方式,區別在于重載實現的是編譯時的多態,重寫實現的是運行時的多態;(在了解下)

2 重寫后,子類方法的訪問修飾權限不能小于父類的訪問修飾權限;

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

② 什么是構造函數?什么是構造函數重載?什么是復制構造函數?

構造函數(構造器):

當新對象被創建的時候,構造函數會被調用。每一個類都有構造函數。在程序中沒有給類提供構造函數的情況下,Java編譯器會為這個類創建一個默認的構造函數 。

構造函數重載:

java中構造函數的重載和方法重載很相似。可以為一個類創建多個構造函數。每一個構造函數都必須有他唯一的參數列表。

復制構造函數:

java不支持像C++中那樣的復制構造函數 , 這個不同點是因為如果你不自己寫構造方法的情況下,Java不會創建默認的復制構造方法。

三、面向對象的三大特征

① 面向對象的特征,解釋下?

具體的注意點說明:

封裝性:我們可以將類的屬性私有化, 只有通過公共的get/set方法才能進行訪問,在get/set方法中我們可以對內部邏輯進行封裝處理,外部的調用方不必關心我們的處理邏輯。

繼承性:

1 java不支持多繼承;

2 類中的構造函數不能被繼承;如果構造函數被private修飾 ,那么該類就不能被其他類繼承;

3 方法的重寫;

多態性:

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

2 向上轉型和向下轉型;

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

四、java關鍵字

static關鍵字:

① 是否可以在static環境中訪問非static變量?

② 解釋一下static關鍵字,java中是否可以重寫一個private或者是static的方法?

static關鍵字:static是表示靜態的意思,它可用來修飾成員變量和成員函數,被靜態修飾的成員函數只能訪問靜態成員,

不能訪問非靜態成員。靜態是隨著類的加載而加載,因此可以直接用類進行訪問。

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

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

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

static修飾的方法,可以被繼承,但不能被重寫。 因為方法覆蓋是基于運行時動態綁定的,而static方法是編譯時靜態綁定的。static方法跟類的任何實例都不相關,所以概念上不適用。

③ 靜態與非靜態的區別?

這里的靜態,指以static關鍵字修飾的,包括類,方法,塊,字段。靜態變量和靜態方法都屬于靜態對象非靜態,指沒有用static 修飾的。

靜態有一些特點:

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

2.只加載一次,優先于非靜態

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

4.生命周期屬于類級別,從JVM 加載開始到JVM卸載結束。

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

6.靜態方法和靜態變量創建后始終使用同一塊內存。

7.靜態方法優點是效率高,缺點是不自動進行銷毀。

final關鍵字:

④ 說明一下final、finally、finalize的區別?

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

finally是異常處理語句結構的一部分,表示總是執行。

finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,供垃圾收集時的其他資源回收,例如關閉文件等。

⑤ 說明一下final怎么用的?

五、其他知識點

① 請列舉你知道的Object類的方法并簡要說明

Object()默認構造方法。

clone() 創建并返回此對象的一個副本。

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

finalize()當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法。

getClass()返回一個對象的運行時類。

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

notify()喚醒在此對象監視器上等待的單個線程。

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

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

wait()導致當前的線程等待,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法。

wait(long timeout)導致當前的線程等待,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法,或者超過指定的時間量。

wait(long timeout, int nanos) 導致當前的線程等待,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法,或者其他某個線程中斷當前線程,或者已超過某個實際時間量。

六、抽象類和接口

① 抽象類和接口的區別?

抽象類:

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

2 子類必須實現抽象類中的抽象方法,如果有未實現的,那么子類也是抽象類,必須用 abstract 修飾 ;

3 抽象類默認的權限修飾符為public,可以定義為 public 或 procted,如果定義為 private,那么子類則無法繼承;

4? 抽象類不能創建對象, 抽象類就是為了繼承而存在的;

接口( interface ):

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

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

3 接口中所有的方法不能有具體的實現,也就是說,接口中的方法必須都是抽象方法;

區別:

1 一個類只能繼承一個抽象類,而一個類卻可以實現多個接口;

2 抽象類可以提供成員方法的實現細節,而接口中只能存在public abstract 方法;

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

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

② java是否支持多繼承?

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

但是java中的接口支持多繼承,即一個子接口可以有多個父接口。(接口的作用是用來擴展對象的功能,一個子接口繼承多個父接口,說明子接口擴展了多個功能,當類實現接口時,類就擴展了相應的功能)。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。