JavaSE-面對對象疑難點

1.堆和棧

JAVA中的棧和堆
Java方法區、堆、棧、本地方法區及新生代、老年代、元空間整合
JAVA在程序運行時,在內存中劃分5片空間進行數據的存儲。分別是:1:寄存器。2:本地方法區。3:方法區。4:棧。5:堆。
:基本數據類型、局部變量都是存放在棧內存中的,用完就消失。存取速度僅次於寄存器。
:new創建的實例化對象及數組,是存放在堆內存中的,用完之後靠垃圾回收機制不定期自動消除。存取速度較慢。

2.static

特點

  • static修飾的成員被所有對象共享
  • static優於對象存現,因爲static的成員隨着類的加載已經存在了

使用

  • 靜態變量:用於所有對象都只能讀的不變量
  • 靜態方法:不需要訪問非靜態的成員變量的方法

3. 單例設計模式

定義:一個類在內存中的對象唯一性
實現

  • 私有化構造函數
  • 使用new在本類中創建一個本類的對象
  • 定義一個返回該類對象的公有方法。

4. 抽象類和接口

抽象類和接口有什麼區別
在這裏插入圖片描述
在這裏插入圖片描述
相同點:都是不斷向上抽取而來的
不同點:

  • 抽象類需要被繼承,只能是單繼承
    接口需要實現,可以是多實現
  • 抽象類中可以定義抽象方法和非抽象方法
    接口中只能定義抽象方法,必須由子類實現
  • 抽象類的繼承,是is a 關係,實際是定義了該體系的基本共性內容
    接口的實現是like a關係,實際是定義了體系額外的功能

5.final

  • final是一個修飾符,可以修飾類、方法、變量
  • final修飾的不可以被繼承
  • final修飾的方法不可以被覆蓋
  • final修飾的變量是一個常量,只能賦值一次(全部字母大寫,多個單詞“_”連接)

6. 多態

定義:一個對象對應着不同的類型。比如貓既有貓的形態,又具有動物的形態。
體現:父類或者接口的引用指向其子類的對象。

Animal c_animal = new Cat();  //向上轉型,將子類的特性隱藏,無法使用子類特有方法
Cat c_cat = Cat(c_animal);   //向下轉型,使用子類的特有方法
// 注意:自始至終都是子類對象在做着類型變化
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章