面向對象編程的一些概念

隨着編程經驗的積累,我對編程的理解也不斷的發生變化。最開始學的是算法,而後是數據結構,如今開始學習編程思想,這是一個不斷進步的過程。編程思想多是最基礎但倒是最重要的,之前對這些概念只是照本宣科,並不理解,如今開始從新關注編程思想,有了更多的理解。在這裏對我的理解作個總結和記錄。java

1.全部類的基類是?
對象(Object)。算法

2.什麼是對象?
對象是對客觀事物的抽象。對象是類的實例。編程

3.什麼是類?
類是對對象的抽象。類是對象的模板。類是屬性和方法的封裝體。數據結構

4.對象和類的聯繫?
類是對象的模版,對象是類的實例。數據結構和算法

5.對象和類的區別?
對象佔內存,類不佔內存。ide

6.什麼是面向對象?
面向對象(Object Oriented)是一種軟件開發方法,是一種對現實世界理解和抽象的方法。函數

7.什麼是屬性和方法?
屬性是用來描述對象特性的數據,方法是數據的變化過程,是可重用的代碼段。學習

8.面向對象的三大基本特性?
(1)封裝:把客觀事物封裝成抽象的類。儘可能隱藏內部的實現細節,僅對可信任的外部提供調用接口。
(2)繼承:子類能夠具備父類的屬性和方法,提升了代碼的重用性和可擴展性。
(3)多態:一個接口能夠有多種不一樣的實現方式。
實現多態的方法爲重寫(override)和重載(overload 有些語言不支持重載)。
C++面向對象的三大基本特徵spa

9.什麼是重寫和重載?
(1)重寫(override):子類能夠重寫父類非私有的方法。
(2)重載(overload):一個類中能夠有多個同名函數,這些函數的參數不能相同。設計

10.什麼是值類型和引用類型?
(1)值類型:傳值(值拷貝)。
(2)引用類型:傳址(地址拷貝)。

11.值類型和引用類型的區別?
(1)值類型:存放的是實際數據。(存在棧上,速度快)。
(2)引用類型:存放的是對象的引用。(存在堆上,內存小)。
值類型一人一分內存,引用類型共用一分內存。
打個比方:值類型是私家車,一人一輛,你車壞了你遲到,不影響別人。引用類型是公交車,你們公用一輛,車一壞一車人全遲到。

12.Java中String是值類型仍是引用類型?
引用類型。
Java中判斷兩個字符串相等應該用str1.equals(str2),用==不許確。

public static void main(String[] args) {
        String str1 = "string";
        String str2 = "string";
        String str3 = new String("string");
        System.out.println(str1 == str2);        //true
        System.out.println(str1 == str3);        //false
        System.out.println(str1.equals(str2));    //true
        System.out.println(str1.equals(str3));    //true
    }

13.什麼是訪問修飾符?Java中的訪問修飾符都有哪些?
訪問修飾符就是控制類、屬性和方法訪問權限的符號。
Java中的訪問修飾符有四種:private、default(默認的)、protected、public。

做用域 當前類 同包 子類 其餘
private × × ×
default(不寫) × ×
protected ×
public

訪問修飾符的權限越向下越高,儘可能用private,權限不夠再依次提高權限。(多用private少用public)

14.什麼是計算機程序?
計算機程序是能夠完成某些功能的計算機指令集。
計算機程序由數據結構和算法構成。

15.什麼是數據結構?什麼是算法?
數據結構是計算機存儲、組織數據的方式。
算法是計算機執行計算過程的具體描述。
好的數據結構和算法會帶來更高的運行、存儲效率。數據結構每每和高效的檢索算法和索引技術有關
一般,計算機程序須要通過編譯和連接成爲人們難以理解可是計算機理解的格式,而後執行。不須要編譯就能夠運行的程序稱之爲腳本程序。

16.什麼是裝箱?什麼是拆箱?
裝箱是把值類型轉換爲引用類型。拆箱是把引用類型轉換爲值類型。

17.什麼是標識符?
標識符是用來給包、類、變量、方法、接口命名的符號。

18.標識符的命名規範有哪些?
(1)標識符由字母、數字、下劃線_或美圓符號$組成。
(2)首字符不能爲數字
(3)不能使用關鍵字
(4)區分大小寫
其實Java中可用的標識符不少,Unicode字符集中的不少字符均可以看成標識符使用,好比¥、中文、日文、希臘字母、羅馬數字等等均可以,不過不經常使用,有興趣的能夠本身試一下。

19.標識符有哪些約定俗成的命名規範?
包:用小寫的倒置域名來命名。格式: 前綴+ 項目名+ 模塊名+ 層 如:com.it.mode.user
類、接口:首字母大寫。如Object、Exception
變量、方法:小寫字母開頭。多個單詞組成時遵循駝峯命名法。第二個單詞開始全部單詞首字母大寫。如:userName、toString();
常量:所有大寫,多個單詞之間用下劃線_鏈接。如:MAX_VALUE、MIN_VALUE

20.面向對象設計的六大原則是什麼?簡述這些原則。
(1)單一職責
一個類只專一於作一件事。(一個類或者模塊應該有且只有一個改變的緣由)

(2)開閉原則
對擴展開放,對修改關閉。

(3)里氏代換原則
父類能出現的地方,子類必定能出現。(子類能替代掉父類,軟件的功能不受影響)

(4)接口隔離原則
一個類對另外一個類的依賴應該創建在最小接口上。

(5)依賴倒置原則
高層次的模塊不該該依賴於底層次的模塊,他們都應該依賴於抽象。抽象不依賴於具體實現,具體實現應該依賴於抽象。

(6)迪米特法則
又叫最少知識原則,一個對象應該對其餘對象有儘可能少的瞭解,不和陌生人說話。

21.什麼是序列化?什麼是反序列化?序列化的目的是什麼?序列化(Serialization)是把對象轉換爲字節序列的過程反序列化(Deserialization)是把字節序列轉換爲對象的過程序列化用於存儲或傳輸對象

相關文章
相關標籤/搜索