1.Java中類的成員變量會有初值 局部變量不會有初值
2.構造方法:用來初始化對象 方法名與類名相同 分為有參和無參 有參和無參可共存
3.靜態變量 可以通過類名直接訪問 所有對象均可以訪問 但無法修改
4.初始化塊:類的實例創建時 會依次執行初始化塊 且只會執行一次 通常為成員變量賦值
靜態初始化塊:static修飾的塊 只在類加載時執行 只能給靜態變量賦值
5.封裝: 訪問修飾符 可見性 private 默認 protected public 訪問范圍分別在本類 同包 子類 其他 依次擴大
geter seter 和OC相同
6.Java中的包 通過import導入 package關鍵字 必須在第一行
可以通過包名區別名字相同的類 OC中并沒有 這個應該就是命名空間
java中的包命名規則一般為 com.功能.類名 且為全小寫
import com.A.* 將A下的所有文件導入
7.Java中的this關鍵字 表示當前對象 類似于OC中的self
8.內部類 普通內部類 創建: 內部類 對象名 = 外部類對象.new 內部類;
訪問外部類屬性 外部類名.this.屬性名
靜態內部類 創建: 內部類 對象名 = new 內部類
訪問外部類靜態變量 外部類名.靜態變量名
方法內部類 只能在該方法中使用 (swift也有這樣的特性 個人感覺沒啥亂用 導致代碼一團糟)
9.繼承 extends關鍵字 單繼承 與OC一致(貌似了解的只有C++是多繼承)
構造方法執行順序 先父類 后子類
屬性賦值 先執行初值 再執行構造方法中的賦值
final 修飾類 類不允許被繼承 修飾屬性 屬性只能被出初始化一次 修飾方法 方法不能被重寫
super 代表父類對象 可以訪問父類的屬性 方法等 類似OC
10.重寫 與OC相同
11.Object類 toString()方法 會輸出改對象的內存地址 可以通過重寫該方法 更改預期的結果
equals()方法 比較對象是否指向同一塊內存地址 OC直接使用==判斷
12.多態 對象具有多種形態(引用多態、方法多態) 與OC類似
13.引用類型轉換 強制類型轉換時使用instanceof關鍵字保證安全 類似于OC中的 isKindOfClass
14.抽象類 abstract關鍵字 只聲明 不實現 規定子類應有的方法
eg. abstract class A{abstract void funcA();} //抽象類A包含了一個子類必須實現的funcA
15.接口 規定了某些類必須實現某些方法
interface關鍵字
通常被其他類繼承 實現 不能使用
格式: [修飾符] abstract interface [接口名] [extends 父接口1,父接口2...]
{
零個到多個常量定義。。
零個到多個抽象方法定義。。
}
使用接口 implements關鍵字
格式: [修飾符] class 類名 extends 父類 implements 接口1, 接口2...