Java面試總結(一)-面向對象編程

java面試總結(一)

第一部分-面向對象編程
1 Java的三大特性
面向對象編程有三大特性:封裝、繼承、多態。
封裝隱藏了類的內部實現機制,可以在不影響使用的情況下改變類的內部結構,同時也保護了數據。對外界而已它的內部細節是隱藏的,暴露給外界的只是它的訪問方法。
繼承是爲了重用父類代碼。繼承給對象提供了從基類獲取字段和方法的能力。繼承提供了代碼的重用性,也可以在不修改類的情況下給現存的類添加新特性。
多態是編程語言給不同的底層數據類型做相同的接口展示的一種能力;就是指程序中定義的引用變量所指向的具體類型和通過該引用變量發出的方法調用在編程時並不確定,而是在程序運行期間才確定,即一個引用變量倒底會指向哪個類的實例對象,該引用變量發出的方法調用到底是哪個類中實現的方法,必須在由程序運行期間才能決定。因爲在程序運行時才確定具體的類,這樣,不用修改源程序代碼,就可以讓引用變量綁定到各種不同的類實現上,從而導致該引用調用的具體方法隨之改變,即不修改程序代碼就可以改變程序運行時所綁定的具體代碼,讓程序可以選擇多個運行狀態,這就是多態性。
2.封裝的定義和好處有哪些?
封裝給對象提供了隱藏內部特性和行爲的能力。對象提供一些能被其他對象訪問的方法來改變它內部的數據。在Java當中,有3種修飾符:public,private和protected。每一種修飾符給其他的位於同一個包或者不同包下面對象賦予了不同的訪問權限。
下面列出了使用封裝的一些好處:
通過隱藏對象的屬性來保護對象內部的狀態。
提高了代碼的可用性和可維護性,因爲對象的行爲可以被單獨的改變或者是擴展。
禁止對象之間的不良交互提高模塊化。
一是用private把類的細節與外界隔離起來,從而實現數據項和方法的隱藏,而要訪問這些數據項和方法唯一的途徑就是通過類本身,類纔有資格調用它所擁有的資源(方法,數據項屬性等等)。所以第一個好處就是數據的安全性提高了。
二是通過隱藏隔離,只允許外部對類做有限的訪問,開發者可以自由的改變類的內部實現,而無需修改使用該類的那些程序。只要那些在類外部就能被調用的方法保持其外部特徵不變,內部代碼就可以自由改變,各取所需,利於分工。
三就是提高了代碼的重用性,封裝成工具類以後能夠減少很多繁瑣的步驟。
3 抽象的定義?抽象和封裝的不同點?
抽象是把想法從具體的實例中分離出來的步驟,因此,要根據他們的功能而不是實現細節來創建類。Java支持創建只暴漏接口而不包含方法實現的抽象的類。這種抽象技術的主要目的是把類的行爲和實現細節分離開。
抽象和封裝是互補的概念。一方面,抽象關注對象的行爲。另一方面,封裝關注對象行爲的細節。一般是通過隱藏對象內部狀態信息做到封裝,因此,封裝可以看成是用來提供抽象的一種策略。
4 堆和棧的區別
(1)Java 把內存劃分成兩種:一種是棧內存,另一種是堆內存。
在棧中存放的是基本類型變量和對象的引用變量,當一段代碼定義一個變量時,java就在棧內爲這個變量分配內存空間,當超過變量的作用域時,java會自動回收分配的內存。局部變量在棧內存
(2)堆內存放的是new創建的對象和數組,有java jvm的垃圾回收器來管理。同時會在棧內定義一個特殊變量,讓這個變量的取值等於數組或對象在堆內的首地址,這個特殊變量就成了引用變量。 成員變量在堆內存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章