寫類要重寫equals和hashcode,在類當作map中的key(鍵)時,一定要重寫hashcode,map中的鍵需要使用equals方法,該方法中呼叫了hashcode判斷是否相同。
類中成員變數未手動初始化,虛擬機會自動進行初始化。而區域性變數不能自動初始化,提示該變數未初始化。
public
class persion
}
區域性變數在棧,形參在棧,返回值在棧,物件的引用在棧;
物件在堆,物件的成員變數也在堆。
靜態變數,常量在資料區。
void fun1(int i)
this可以看作是乙個變數,它的值是當前物件的引用。
在類中,用static宣告的成員變數為靜態成員變數,它為該類的共有變數,在第一次使用時被初始化,對於該類的所有物件來說,static成員變數只有乙份。
用static宣告的方法為靜態方法,在呼叫該方法時,不會將物件的引用傳遞給它,所以在static方法中不可訪問非static的成員。
可以通過物件引用或類名(不需要例項化)訪問靜態成員。
ps:重寫方法不能比父類的許可權嚴格。
子類的構造的過程中必須呼叫其基類的構造方法。
子類可以在自己的構造方法中使用super(argument)_list)呼叫基類的構造方法。
ps:如果呼叫super,必須寫在子類構造方法的第一行。
如果子類的構造方法中沒有顯式地呼叫基類的構造方法,則系統預設呼叫基類無引數的構造方法。
public
class
superclass
superclass(int i)
public
static
void main(string args)
}class
subclass
extends
superclass
subclass(int i)
}/*結果:
superclass 無參構造
subclass 有參構造*/
如果子類構造方法中既沒有顯式的呼叫基類的構造方法,而基類中又沒有無參的構造方法(子類沒呼叫父類的構造方法,父類沒有無參的構造方法),則編譯出錯。
public
class
superclass
public
static
void main(string args)
}class
subclass
extends
superclass
subclass(int i)
}/*結果:出錯,父類沒有無參構造方法*/
物件導向的核心。
class person
public void mypetcry()
}-----------------------------------
cat a=new cat();
person p=new person(a);
p.mypetcry();
此處呼叫子類cat()中的cry方法,而不是基類animal的cry方法。
多型:
1. 要有繼承
2. 要有重寫
3. 父類引用指向子類物件
public
void fun1(final
int i)
classt}
class
ttextends
t //不能重寫,編譯錯誤
}final
class
ttt{}
class
tttt
extends
ttt{} //不能被繼承,編譯錯誤
public
inte***ce runner
介面特性
介面可以多重實現;
介面中宣告的屬性預設為public static final的;也只能是public static final的;
介面中只能定義抽象方法,而且這些方法預設為public的、也只能是public的;
介面可以繼承其他介面,並新增新的屬性和抽象方法。
舉例如下:
class
teacher
implements
painter,singger{}
//teacher實現了兩個介面
painter p=new teacher();
p.paint();p.sleep(); //只能訪問painter中的方法
sinngger s=(singger)p;
s.sing();s.eat(); //只能訪問sinnger中的方法
java物件導向學習筆記
1.類和物件 類可以看成是一類物件的模板,物件可以看成是該類的乙個具體例項.2.類 物件 之間的關係 聚合,繼承,實現,多型.3.記憶體區分 類是靜態概念,區 物件是new出來的,位於堆記憶體 4.構造方法 函式 1 與類同名且沒有返回值 2 用來初始化物件的函式 3 new 構造方法,建立乙個新的...
java 學習筆記 物件導向(繼承)
將學生與工人的共性描述提取出來,單獨進行描述,只要讓學生和工人單獨描述這個類有關係,就可以了 繼承 1,提高了 的服用性。2,讓類與類之間產生了關係,有了這個關係,才有了多型的特性。注意 千萬不要為了獲取其他類的功能,簡化 而繼承。必須是類與類之間有所屬關係才可以繼承 class person st...
物件導向java學習筆記2
x abc y x和y指向同乙個。x abc y abc x和y的值相同。拓 char x abc char y abc x y的結果是false,判讀的是指標引用的記憶體位址不同 x y的結果是true,兩個指標位址所儲存的數值相同。例項1 package oolearning public cl...