java基礎---類和物件(1)
阿新 • • 發佈:2020-09-17
一、 類和物件
面向物件:以屬性和行為的觀點去分析現實生活中的事物,將功能封裝進物件,強調具備了功能的物件,以類/物件為最小單位,考慮誰來做
面向過程:強調的是功能行為,以函式為最小單位,考慮怎麼做
類:是對具有相同特徵和行為的多個物件共性的抽象描述,在Java語言中體現為一種引用資料型別,裡面包含了描述特徵/屬性的成員變數以及描述行為的成員方法,用於構建物件的模板,物件的資料結構由定義它的類來決定
物件:是實際存在的該類事物的每個個體, 是類的例項
- 類的定義
類主要包括成員變數和成員方法,程式碼塊,構造器,內部類
修飾符 class 類名{ 成員變數宣告; //可以在宣告的同時進行初始化,否則賦予預設初始化值 {程式碼塊} 構造器 內部類 成員方法宣告; }
- 物件的建立和使用
- 使用new建立物件: 類名 物件名= new 類名();
- 使用物件名.變數或者物件名.方法的方式訪問物件成員(包括變數和方法)
- 如果建立了一個類的多個物件,對於類中定義的非靜態屬性,每個物件都擁有各自的物件成員,互不干擾
- 類的訪問機制
- 在一個類中,類中的方法可以訪問該類的成員和方法
- 在不同類中,需要建立類的物件通過物件名.變數或者物件名.方法的方式訪問物件成員
- 物件記憶體解析: 引用型別的變數只可能儲存null值或者指向堆空間的地址值
- 堆(Heap):存放new出來的物件例項,所有的物件例項和陣列都在這裡分配記憶體
- 棧(stack):通常指虛擬機器棧,用於存放區域性變數等,區域性變量表存放了編譯期間可知長度的各種基本資料型別(boolean,byte,char,short,int,long,float,double)、物件引用(reference型別,是物件在堆記憶體的首地址),當方法執行完後,該區域性變數自動釋放
- 方法區(method):用於儲存已經被虛擬機器載入的類資訊、常量、靜態變數、即時編譯器編譯後的程式碼等資料
一個物件的建立記憶體解析
- 匿名物件: 沒有顯式的給建立的物件賦予物件名,匿名物件只能呼叫一次,通常將匿名物件作為實參傳遞給一個方法呼叫
二、 成員變數
- 語法格式: 修飾符 資料型別 變數名 =初始化值;
- 成員變數的預設初始化值
- 整型(byte、short、int、long):0
- 浮點型(float、double):0.0
- 字元型(char):0 (或'\u0000')
- 布林型(boolean):false
- 引用資料型別(類、陣列、介面):null
- 變數的分類
- 在方法體外,類體內宣告的變數為成員變數
- 在方法體內,方法形參等宣告的變數為區域性變數
- 在方法體外,類體內宣告的變數為成員變數
- 屬性(成員變數) vs 區域性變數
- 相同點:定義格式:資料型別 變數名 = 變數值;需要先宣告,後使用;都有其對應的作用域
- 不同點
- 在類中宣告的位置的不同:屬性直接定義在類的一對{}內;區域性變數宣告在方法內、方法形參、程式碼塊內、構造器形參、構造器內部的變數
- 關於許可權修飾符的不同:屬性:可以在宣告屬性時,指明其許可權,使用許可權修飾符;區域性變數不可以有許可權修飾符
- 預設初始化值的情況:屬性,類的屬性,根據其型別,都有預設初始化值;區域性變數沒有預設初始化值,在呼叫區域性變數之前,一定要顯式賦值,區域性變數作為形參在呼叫時,我們賦值即可
- 在記憶體中載入的位置:屬性載入到堆空間中 (非static);區域性變數:載入到棧空間