
final方法
1、為了確保某個函數的行為在繼承過程中保持不變,並且不能被覆蓋(override),可以使用final方法。
2、為了效率上的考慮,將方法聲明為final,讓編譯器對此方法的調用進行優化,要注意的是,編譯器會自行對final方法進行判斷,並決定是否進行優化。通常在方法的體積很小,而我們確實不希望它被覆蓋時,才將它聲明為final。
3、class中所有的private和static方法自然就是final。
例如 public final void pubMethod(){}
抽象方法和抽象類
1、在類中沒有方法體的方法,就是抽象方法。
2、含有抽象方法的類,即為抽象類。
3、如果一個子類沒有實現抽象類中所有的抽象方法,則子類也成為一個抽象類。
4、我們可以將一個沒有任何抽象方法的類聲明為abstract,避免由這個類產生任何的對象。
abstract方法必須定義在abstract類中。
例如 protected abstract void proMethod();
native方法
1、native方法是用戶在java中可以使用,但不能編寫的方法。
2、JNI(Java Native Interface),它允許Java虛擬機(JVM)內部運行的java代碼能夠與用其它編程語言(如C、C++、匯編語言)編寫的應用程序和庫進行互操作。
3、JNI最大的好處是它沒有對底層java虛擬機的實現施加任何限制,因此,Java虛擬機廠商可以在不影響虛擬機其它部分的情況下添加對JNI的支持。程序員只需編寫一種版本的本地(Native)應用程序和庫,就能夠與所有支持JNI的Java虛擬機協同工作。
4、JNI可以理解為Java和本地應用程序之間的中介。
步驟:


.so是unix,linux下動態鏈接庫的后綴名
1、編寫java代碼
HelloWprld.java文件中
class HelloOWorld{
public native void displayHelloWorld();
static{//加載類的時候,就會加載靜態語句塊
Sysytem.loadLiabrary("hello");//加載名為hello的動態鏈接庫
}
public static void main(String[] args){
new HelloWorld().displayHelloWorld();
}
}
2、編譯java代碼
javac HelloWorld.java
3、創建.h的文件,javah編譯的是的類

在頭文件中h,聲明了本地方法的名稱
Java_類名_native方法的方法名
4、本地方法的實現
HelloWorldImp.c

5、創建動態鏈接庫
cl編譯器用法 cl\?可以查看它的具體用法
注意-I后面不要有空格。


6、執行java程序
java HelloWorld。
這就是利用native去訪問c語言寫的函數的方法

