zoukankan      html  css  js  c++  java
  • 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语言写的函数的方法

  • 相关阅读:
    server正式的环境性能测试nginx-php 指着寻求突破的表现
    SICP 锻炼 (1.45)解决摘要
    sdut 3-4 长方形的周长和面积计算
    吉克1111-1114第七周讲座班、家庭作业(动态规划,期限:2014年4月25日本23点-周五晚上,科委飞信通知学生)
    STL源代码分析——STL算法sort排序算法
    伺服驱动器UVW电机电源线相序错误
    1_BLE nRF51822 UART 与 BLE转发
    研制埃博拉疫苗与科学家的奇思秒想
    垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
    Recover Binary Search Tree -- LeetCode
  • 原文地址:https://www.cnblogs.com/XiHua/p/3529526.html
Copyright © 2011-2022 走看看