`

java方法调用内存相关

 
阅读更多
public class Test2 {
	public static void main(String[] args) {
		Father f = new Child();
		f.service();
	}
}
class Father{
	public void service(){
		System.out.println("parent service");
		doGet();
	}
	public void doGet(){
		System.out.println("parent doGet");
	}
}
class Child extends Father{
	public void service(){
		System.out.println("child service");
		super.service();
	}
	public void doGet(){
		System.out.println("child doGet");
	}
}

 结果是:

child service
parent service
child doGet

 比较难以理解的是调用super.service(),结果却是

parent service
child doGet

也就是说:

public void service(){
		System.out.println("parent service");
		doGet();
	}
	public void doGet(){
		System.out.println("parent doGet");
	}

 这段代码中调用的doGet()是子类的doGet方法。

原因:我们方法调用的时候,会默认将this关键字传入进去(隐式传this),而Father f = new Child()这段代码,是一个父类引用指向子类对象。它会调用Child的方法。而隐式传的this就是Child的this。

所以当调用doGet()方法时,其实就相当于this.doGet()。(我们直接加上this,结果也是正确的)。

也就是Child 的doGet方法。

 

分享到:
评论

相关推荐

    JAVA调用DLL方法 JAVA调用DLL方

    ### JAVA调用DLL方法 在跨平台开发领域中,Java作为一种强大的编程语言,因其具有良好的移植性和跨平台性而被广泛使用。然而,在某些特定情况下,我们可能需要调用本地库(例如DLL文件)来实现特定功能或提高性能。...

    java管理windows系统内存_java释放内存缓存_java获得CPU使用率_系统内存_硬盘_进程源代码

    Java可以通过调用Windows API来管理Windows系统的内存,释放内存缓存,获得CPU使用率,监视系统性能,获得系统内存信息,获得磁盘空间信息和枚举进程列表。 相关知识点: * Windows内存管理机制 * 虚拟内存和页面...

    Java加载dll,导致Java进程内存泄露

    Java本身具有垃圾回收机制,能够自动管理内存,但在调用DLL时,由于这部分代码是运行在C/C++环境中,不遵循Java的内存管理规则。如果DLL中分配了内存但未正确释放,或者Java和DLL之间对对象的引用处理不当,都可能...

    java浏览器调用ie内核

    这些文件可能包含Java源代码、配置文件或者相关的文档,通过阅读和理解代码,可以更深入地学习如何实现Java调用IE内核。 总结来说,Java调用IE内核主要涉及Java与ActiveX控件的交互,这一技术虽然有一定的历史背景...

    Java调用Qt DLL

    Java调用Qt DLL是一个跨平台的技术实践,涉及到Java与C++之间的互操作性,其中Qt是一个流行的C++库,主要用于图形用户界面开发。这个主题主要包含以下几个知识点: 1. **JNI(Java Native Interface)**:JNI是Java...

    java 远程方法调用(java rmi)

    它允许一个对象在某个Java虚拟机(JVM)上执行的方法调用另一个在不同JVM上的对象的方法,仿佛它们是在同一个内存空间内操作。这种技术的核心是使Java对象能够跨越网络边界进行交互,从而实现真正的分布式计算。 一...

    Java应用程序和java Web调用Matlab配置实例

    通过Java调用Matlab,可以将Matlab的计算引擎嵌入到Java应用或Web服务中,为复杂的数据处理和科学计算提供便利。 首先,要实现这一目标,你需要安装Matlab的Java接口,即MATLAB Compiler SDK。这个SDK允许开发者将...

    使用JNA替代JNI调用DLL,并解决内存溢出问题

    ### 使用JNA替代JNI调用DLL,并解决内存溢出问题 #### 问题背景 在项目的开发过程中,常常遇到需要处理二进制流数据并对其进行解析处理的情况。这种情况下,如果上层应用平台采用的是Java开发,而底层算法或数据...

    2.1Java中调用Opencv的方法(代码下载)

    本教程将详细介绍如何在Java项目中调用OpenCV,并提供相关代码示例。 首先,你需要了解OpenCV是什么。OpenCV(开源计算机视觉库)是一个跨平台的计算机视觉库,它包含了大量的图像处理和计算机视觉算法,广泛应用于...

    java调用C语言编写的so库中的函数,java调用C语言编写的dll库中的函数

    总的来说,Java调用C语言编写的本地库需要理解JNI和JNA的工作原理,以及它们如何处理数据类型转换、参数传递和本地库的加载。通过这些技术,开发者可以充分利用C/C++的性能优势,同时享受Java的平台独立性和高级抽象...

    java jna 调用pytorch c++模型推理

    Java JNA调用PyTorch C++模型推理是一种在Java应用程序中利用PyTorch的深度学习能力的方法。JNA(Java Native Access)是Java平台上的一个库,它允许Java代码直接调用本机库(如C++编写的库),而无需编写JNI(Java ...

    java调用c++生成so库

    标题“java调用c++生成so库”指的是在Linux环境下,通过JNI技术,Java程序可以调用预先用C++编译生成的动态链接库(.so文件)。.so文件是Linux下的动态共享对象,相当于Windows下的.DLL文件,它包含了可由多个程序...

    DELPHI 7 调用 JAVA 接口

    6. **传递参数和接收结果**:在Delphi中,你可以使用上述函数,传入Java接口名、方法名以及参数,调用Java方法并获取返回值。 ```delphi const ClassName = 'com/example/MyJavaClass'; MethodName = '...

    android调用C语言实现内存的读取与修改的方法示例

    4. 最后,需要在 Java 代码中调用 JNI 类的native方法,以便实现内存的读取与修改。 示例代码 以下是使用 C 语言实现内存的读取与修改的示例代码: MainActivity.java: ```java package com.gs.jc; import ...

    java中方法重载内存分析

    下面我们将详细探讨Java中的方法重载以及内存分配相关的知识点。 首先,我们来解释什么是方法重载。在Java中,如果一个类中有两个或更多的方法拥有相同的名称,但它们的参数列表不同(参数数量、类型或者顺序不同)...

    java调用com组件实例

    Java调用COM组件是Java与非Java环境交互的一种方式,主要应用于Windows平台,因为COM(Component Object Model)是微软提出的一种面向对象的技术,主要用于构建Windows应用程序和服务。在Java中调用COM组件,可以...

    GMSSL的java调用(JNI库和调用实例).zip

    在这个“GMSSL的java调用(JNI库和调用实例).zip”压缩包中,我们主要探讨如何在Java环境中通过JNI(Java Native Interface)来调用GMSSL库,以便利用这些国密算法进行数据加解密和哈希运算。 首先,我们需要了解...

    在C或C++中调用JAVA方法

    在C或C++中调用JAVA方法是一种常见的跨语言交互技术,主要依赖于Java Native Interface (JNI)。JNI是Java平台的一部分,它允许Java代码和其他语言编写的代码进行交互,从而实现混合编程。JNI提供了丰富的API,使得...

    使用JNI进行混合编程:在Java中调用C/C++本地库

    - Sample1.cpp和Sample1.h构成了C/C++端的实现,它们将被编译成动态链接库供Java调用。 通过以上步骤,我们可以看到,JNI允许Java和C/C++代码无缝集成,实现了跨语言的混合编程。这不仅扩展了Java的功能,还能利用...

    java语言方法调用C语言函数

    6. **测试Java调用C函数** 在Java程序中,现在可以通过`callCFunction`调用C代码: ```java public class Main { public static void main(String[] args) { NativeDemo demo = new NativeDemo(); demo....

Global site tag (gtag.js) - Google Analytics