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语言写的函数的方法

  • 相关阅读:
    POJ 3468 A Simple Problem with Integers
    BZOJ 4430 Guessing Camels
    POJ 2309 BST
    POJ 1990 MooFest
    cf 822B Crossword solving
    cf B. Black Square
    cf 828 A. Restaurant Tables
    Codefroces 822C Hacker, pack your bags!
    [HDU 2255] 奔小康赚大钱
    [BZOJ 1735] Muddy Fields
  • 原文地址:https://www.cnblogs.com/XiHua/p/3529526.html
Copyright © 2011-2022 走看看