`
只帅一次
  • 浏览: 34610 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java编程思想练习题-第5章练习8-super实现详解

阅读更多

也许你会有疑问super关键字是如何暗箱操作的呢?

这个问题涉及到java虚拟机的一些机制了,我们知道java是支持多态的,那是因为具体到指令集上,是invokevirtual指令支持多态的!而invokespecial是不支持多态的!

我们通过使用super关键字发出方法调用时,指令就被编译器编译成了invokespecial指令(发出方法调用的对象依然是this指向的实例)

例子:

public class Parent {
public void test(){
}
        public void test1() {
test();
} 
}
public class Child extends Parent {
public void test() {
super.test();
}
       public static void main (String[]args){
             new Child().test();
             new Child().test1();
        } 
}

 

 查看编译后的结果:

其中Child的Test方法体编译为如下内容

aload_0
invokespecial #15(superdemo/Parent.test) 
return

 

 

其中aload_0是将this这个引用压入栈。(也证明了发出方法调用的依然是this)

#15指向常量池中索引值为15的常量,是一个CONSTANT_Methodref_info类型的常量。其代表superdemo包中Parent类的test方法(这里这两个类所在包为superdemo)

 

 

通俗一点来说

super.test();

 

 被jvm变成了

Parent p=this;
p.test();

 

 但是需要被编译为invokespecial。

分享到:
评论

相关推荐

    Java练习题1-9章

    "Java练习题1-9章"涵盖了从入门到进阶的关键知识点,旨在帮助学习者巩固和提升Java编程技能。下面将对这些章节涉及的主要知识点进行详细的阐述。 1. **第一章:Java简介** - Java的历史和应用领域 - Java的特性:...

    Java 语言程序设计 基础版 第十版 第一章--第五章 课后编程练习题答案

    Java语言程序设计基础版第十版的第一章至第五章课后编程练习题答案涵盖了Java编程的基础概念和关键技能。这些章节的题目旨在帮助学习者深入理解Java语法、数据类型、控制结构、类与对象以及异常处理等核心概念。下面...

    Java应用程序-习题-第5章.doc

    Java 应用程序习题第五章知识点总结 本文将详细解释 Java 应用程序习题第五章中的知识点,包括继承关系、方法覆盖、方法重载、构造方法、类型转换等重要概念。 1. 继承关系 在 Java 中,类 Student 继承自类 ...

    java编程思想参考答案

    《Java编程思想》是 Bruce Eckel 编著的一本经典Java教程,这本书深入浅出地讲解了Java语言的核心概念和编程技巧。书中的练习题旨在帮助读者巩固所学知识,提高编程技能。以下是对这些练习题及参考答案的详细解析: ...

    ACCP5.0S2教程\使用Java实现面向对象编程(Java OOP)\使用Java实现面向对象编程(Java OOP)上机贯穿案例源码

    "ACCP5.0 S2"可能是一个计算机编程课程或培训计划的一部分,其中S2可能代表课程的第二阶段,而"Java OOP上机贯穿"则意味着学员将通过实际编程项目来实践和巩固所学知识。 源代码中包含的上机贯穿案例可能是多个小...

    java 编程思想.txt

    根据提供的文件信息,我们可以深入探讨《Java编程思想》这一主题中的关键知识点,这些知识点主要集中在类、对象、封装性、继承、多态等核心概念上。 ### Java编程思想概述 《Java编程思想》这本书深入浅出地介绍了...

    Java应用程序-习题-第7章.doc

    Java 异常处理机制详解 Java 应用程序中,异常处理机制是非常重要的一部分,它可以帮助开发者更好地处理程序中的错误和异常情况。在本章节中,我们将详细介绍 Java 中的异常处理机制,包括异常的分类、try-catch ...

    计算机后端-Java-Java核心基础-第13章 面向对象05 16. 继承和super课后练习.avi

    计算机后端-Java-Java核心基础-第13章 面向对象05 16. 继承和super课后练习.avi

    Java面试题和练习题

    本文将基于标题“Java面试题和练习题”以及描述中提到的内容,深入探讨Java相关的面试题和练习题,旨在帮助求职者或希望提升技能的开发者巩固知识,准备面试。 一、Java基础 1. Java的数据类型:了解Java的八种...

    JAVA核心编程技术-前十章8.ppt

    JAVA核心编程技术 - 泛型和集合 JAVA核心编程技术是指Java语言的核心编程技术,其中泛型和集合是Java编程中非常重要的概念。泛型是Java SE 5.0的新特性,它的本质是参数化类型,也就是说所操作的数据类型被指定为一...

    JAVA-练习题第2章(ppt文档).pptx

    JAVA-练习题第2章(ppt文档) 这部分内容主要包括Java语言的基础知识,涵盖标识符、数据类型、变量声明、运算符优先级等方面。 1. 标识符的构成规则:在Java语言中,标识符可以是字母、数字或下划线的组合,但不能...

    Java面向对象编程思想.pdf

    Java 面向对象编程思想是 Java 编程语言的核心思想之一,通过封装、继承和多态三个特征,实现代码的重用和可维护性。 一、封装 封装是 Java 面向对象编程的三大特征之一,通过 Java 的类来实现数据和操作方法的...

    java编程思想习题答案

    《Java编程思想》是 Bruce Eckel 的经典著作,这本书深入浅出地讲解了Java语言的核心概念和编程技术。习题答案则是对书中理论知识的实践检验,帮助读者巩固理解。以下将详细介绍这份习题答案中可能涵盖的重要知识点...

    50道JAVA基础编程练习题

    这份"50道JAVA基础编程练习题"旨在帮助初学者巩固基础,掌握Java语言的核心概念,同时也适合有一定经验的开发者温故知新,提升编程技巧。 1. 变量与数据类型:练习题可能包括声明不同数据类型(如int、double、char...

    java语言程序设计(基础篇)各章偶数号题目编程练习题答案

    本资源"java语言程序设计(基础篇)各章偶数号题目编程练习题答案"专注于Java编程的学习,包含了教材中各章节偶数编号练习题的解答,对于自我检验和提升编程技能具有很高的价值。 Java是一种面向对象的编程语言,由...

    计算机后端-Java-Java核心基础-第13章 面向对象05 14. super调用构造器.avi

    计算机后端-Java-Java核心基础-第13章 面向对象05 14. super调用构造器.avi

    Java基本练习题(Java编程基础知识)

    本资源“Java基本练习题”旨在帮助学习者通过实践加深对Java的理解,提升编程技能。下面将详细阐述Java的基础知识,并结合可能的练习题集内容进行讲解。 1. **Java语法基础** - 变量与数据类型:了解基本的数据...

    计算机后端-Java-Java核心基础-第13章 面向对象05 13. super调用属性和方法.avi

    计算机后端-Java-Java核心基础-第13章 面向对象05 13. super调用属性和方法.avi

    java练习题-继承.doc

    Java 继承练习题 Java 继承是 Java 面向对象编程语言中的一种机制,通过继承,可以让一个类继承另一个类的属性和方法,从而实现代码的重用和继承关系的建立。本文将通过一个练习题,来详细介绍 Java 继承的使用和...

    Thinking in java第4版练习题答案

    练习题可能涉及单一继承、多重继承(虽然Java不支持,但可以通过接口实现)以及super关键字的使用。 4. **多态**:多态是不同对象对同一消息做出不同响应的能力。Java通过方法重写(override)和向上转型...

Global site tag (gtag.js) - Google Analytics