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语言写的函数的方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现