1.反射 註解
反射是
java在在jvm運行時運行期間動態獲取類的信息,包括屬性 方法。
註解是 繼承了Annocation的接口,
解析註解的方式: 一種是編譯器,掃描類中的註解,根據註解,編譯器進行某些操作。一種是通過反射調用。
元註解: 註解的註解。
- @Target 註解的目標 @Retention 註解的生命週期 @Inherit 是否允許子類繼承
內置註解 @Override @Deprecated(過時的方法)
public @interface anT{} 自定義註解。
註解的作用:
清晰的幫助我們知道代碼是做什麼的。
在編譯期進行檢測。
在框架中,利用註解 通過反射,減少配置文件的使用。
2.異常
異常分爲error exception
error 是值jvm自身造成的,如溢出。
excpetion 是異常時可進行捕獲的。包括
運行時異常,即平常我們所說的空指針,數組越界,class notfinfd,ArithmeticException分子爲0.運行時異常都是無法檢測的,在運行期間才能檢測出。
ioe Exception :
檢查性異常:需要強制進行 trycatch的。非檢查性異常: 不需要捕獲,runtime異常。
package test;
class Test {
public static void main(String[] args) {
System.out.println(new B().getValue());
}
static class A {
protected int value ;
public A (int v) {
setValue(v);
}
public void setValue(int value) {
this.value= value;
}
public int getValue() {
try {
value ++;
return value;
} finally {
this.setValue(value);
System.out.println(value);
}
}
}
static class B extends A {
public B () {
super(5);
setValue(getValue()- 3);
}
public void setValue(int value) {
super.setValue(2 * value);
}
}
}
執行過程是,
一. super(5) 執行父類構造方法,然後裏面執行this.setvalue 。繼續執行裏面的supe.setValue(2*5) ; value=10
二 .setValue(getValue() -3) ,執行value++,11,保留此時的return value值,然後去執行finally,打印22。 setValue(11-3),value 16.
三 執行newB.getValue()return 16+1; 打印 34.然後執行輸出 17.
3. 封裝 多態 抽象類 接口
封裝 :在類中將變量聲明爲private ,然後暴露出 public 的set get方法,可以將變量設爲只能讀取或者只能寫入。用戶不需要知道類中變量是如何賦值的,類對外暴只是露出接口,具體的實現進行封裝。
多態:
有兩方面的行爲,一是從父類繼承的方法,方法中的內容可以進行根據自身需求具體編寫。
二是,可以進行重載,方法名相同,但參數類型個數不一樣,從而表現出不一樣的行爲。、
接口:
接口默認是抽象類 是不可實例化的,其方法也是public 且抽象的。是對行爲的抽象,是一組行爲規範。
類實現接口,實現其具體的方法
好處: 將設計與實現分離,對外隱藏實現。面向接口編程oop。
接口和抽象類的 區別:
抽象類是有抽象方法,抽象方法只能用作被聲明,抽象類不能被實例化 ,其他的更與普通類差不多。