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();
}
}
、编译java代码
javac HelloWorld.java
3、创建.h的文件,javah编译的是的类
在头文件中h,声明了本地方法的名称
Java_类名_native方法的方法名
4、本地方法的实现
HelloWorldImp.c
5、创建动态链接库
cl编译器用法 cl\?可以查看它的具体用法
注意-I后面不要有空格。
6、执行java程序
java HelloWorld。
这就是利用native去访问c语言写的函数的方法
final方法,abstract方法和abstract类,native方法的更多相关文章
- virtual方法和abstract方法
在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别.二者都牵涉到在派生类中与override的配合使用. 一.Virtual方法(虚方法) virtual ...
- final 关键字:用来修饰类,方法,成员变量,局部变量
final 关键字:用来修饰类,方法,成员变量,局部变量 表示最终的不可变的 1.final修饰一个类 表示当前的类不能有子类,也就是不能将一个类作为父类 格式: public final class ...
- Servlet的Service方法和doget 和 dopost方法的区别,常见的错误解析
package com.sxt.in; import java.io.IOException; import javax.servlet.ServletException; import javax. ...
- Ext.Ajax.request()方法和FormPanel.getForm().submit()方法,都返回success()方法的差异
我还是不发表到博客园首页吧,要不然还是要被取消,>_< 还是言归正传吧,关于Ext.Ajax.request()方法和FormPanel.getForm().submit()方法返回suc ...
- jQuery.extend()方法和jQuery.fn.extend()方法
jQuery.extend()方法和jQuery.fn.extend()方法源码分析 这两个方法用的是相同的代码,一个用于给jQuery对象或者普通对象合并属性和方法一个是针对jQuery对象的实例, ...
- iOS 如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用?
如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用? 1. - (void)pushViewController:(U ...
- service 方法和doGet、doPost方法的区别
Service方法和doGet和doPost方法的区别service: 可以处理get/post方式的请求,如果servlet 中有service方法,会优先调用service方法进行处理do ...
- File类获取功能的方法和File类判断功能的方法
File类获取功能的方法-public String getAbsolutePath() :返回此file的绝对路径名字符串 -public String getPath() :将此File转换为路径 ...
- toString方法和valueof()方法的区别
JavaScript引用类型之Array数组的toString()和valueof()方法的区别 一.转换方法 1.在JavaScript中几乎所有对象都具有toLocaleString().to ...
随机推荐
- Asp.net Core Windows部署
一. IIS 部署模式 1. 安装IIS服务 2. 下载安装Core SDK https://www.microsoft.com/net/download/Windows/build3 ...
- keras安装配置指南【linux环境】【转】
本文转载自:https://keras-cn.readthedocs.io/en/latest/for_beginners/keras_linux/#kerasmnist 本教程不得用于任何形式的商业 ...
- vCenter Server 6.7 集成 vRealize Orchestrator 7.5
第一步,安装独立Orchestrator 7.5,并初始化 Orchestrator ova导入和初始化步骤省略...请参考官方文档... Orchestrator 初始化中的认证源需要和vCen ...
- Spring Boot CRUD+分页(基于JPA规范)
步骤一:JPA概念 JPA(Java Persistence API)是Sun官方提出的Java持久化规范,用来方便大家操作数据库. 真正干活的可能是Hibernate,TopLink等等实现了JPA ...
- 【网络优化】Batch Normalization(inception V2) 论文解析(转)
前言 懒癌翻了,这篇不想写overview了,公式也比较多,今天有(zhao)点(jie)累(kou),不想一点点写latex啦,读论文的时候感觉文章不错,虽然看似很多数学公式,其实都是比较基础的公式 ...
- POJ 1208 模拟
2017-08-28 15:07:16 writer:pprp 好开心,这道题本来在集训的时候做了很长很长时间,但是还是没有做出来,但是这次的话,只花了两个小时就做出来了 好开心,这次采用的是仔细分析 ...
- htop 比top更好用的top
安装 sudo apt-get install htop 使用 htop
- scp 上传 下载 文件
linux 中的ssh命令: scp 可以用来上传本地文件到远程服务器 或下载远程服务器中的文件到本地 1. 上传本地文件到远程服务器 scp readme.md user@www.*****.com ...
- spring security3.1配置比较纠结的2个问题
转自:http://www.iteye.com/topic/1122629 总论无疑问的,spring security在怎么保护网页应用安全上做得很强很周全,但有些地方还是很差强人意,比如对< ...
- python脚本7_打印九九乘法表
#打印九九乘法表 for i in range(1,10): s = "" for j in range(1,i+1): s += str(j) + '*' + str(i) + ...