final方法,abstract方法和abstract類,native方法


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語言寫的函數的方法

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM