`
celebration
  • 浏览: 35170 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java构造方法中的多态

阅读更多
 
  1. public class Qdb extends Depend   
  2. {   
  3.     int i = 30;   
  4.     public Qdb()   
  5.     {   
  6.         print();   
  7.         super.print();   
  8.         i = 40;   
  9.     }   
  10.   
  11.     void print()   
  12.     {   
  13.         System.out.println("Target=> " + i);   
  14.     }   
  15.   
  16.   
  17.     public static void main(String[] args)   
  18.     {   
  19.         new Qdb();   
  20.     }   
  21. }   
  22.   
  23. class Depend   
  24. {   
  25.     int i = 10;   
  26.     public Depend()   
  27.     {   
  28.         print();   
  29.         i = 20;   
  30.     }   
  31.   
  32.     void print()   
  33.     {   
  34.         System.out.println("Depend=> " + i);   
  35.     }   
  36. }  

对于这道题,我的答案是:

Depend=> 10 Target=>30 Depend=>20

可是在运行后我发现答案是:

Target=> 0 Target=> 30 Depend=> 20

        看到答案让我很是费解,按照方法的调用顺序:在调用子类的构造方法之前先调用父类的构造方法,在执行构造方法的语句之前先初始化成员变量。按照这个顺序得到的应该是我预期的答案。

       不过在用debug跟踪后发现在调用父类构造方法里的print()时执行的不是父类的构造方法,而是去执行了子类的构造方法。也就是说在构造方法里也存在着多态性。不过这也只是我的猜测,查了些资料也没有找到答案,姑且先记下来,以后慢慢去了解。

分享到:
评论

相关推荐

    深入Java核心Java中多态的实现机制.pdf

    在深入理解和运用Java中的多态机制时,我们需要仔细研究类的继承结构,理解如何通过接口实现多态,掌握方法重写在实现多态中的作用,以及了解类型擦除和泛型编程在Java中的应用。通过实践和对文档内容的深入挖掘,...

    Java 语言程序设计:第5章接口多态.ppt

    构造方法是 Java 语言中的一种特殊方法,它用于初始化对象的状态。多态可以与构造方法结合使用,以实现更加灵活的编程。 5.6 内部类 内部类是 Java 语言中的一种嵌套类,它可以访问外部类的成员变量和方法。内部类...

    java 多态 经典讲解

    多态在构造方法中的体现较少,但重要的是理解,尽管构造方法不能被重写,它们可以被子类覆盖以初始化特定状态,从而支持更复杂的构造逻辑。 #### 六、利用继承设计:纯粹继承与扩展 继承不仅是代码重用的一种手段...

    Java中构造器内部的多态方法的行为实例分析

    Java中构造器内部的多态方法的行为实例分析是Java编程语言中一个非常重要的知识点,本文将详细介绍Java中构造器内部的多态方法的行为,结合实例形式分析了java构造器内部多态方法相关原理、功能及操作技巧。...

    java继承与多态

    在Java中,多态主要通过继承和方法重写实现。 **3.2 方法重写** 方法重写允许子类重新定义父类的方法。这样,当一个对象被当作父类处理时,实际调用的是子类的方法实现。方法重写的规则包括: - 子类方法的签名...

    java继承和多态PPT教案学习.pptx

    在本文中,我们详细讨论了Java中继承和多态的基本概念,包括里式代换原则、方法重载、构造函数重载和方法覆盖等。通过掌握这些概念,我们可以在实际开发中更好地利用Java语言提供的工具,提高代码质量,加速开发过程...

    Java抽象类接口与多态PPT教案学习.pptx

    * MeGo 的构造方法中没有显式调用基类 Car 的构造方法,系统默认调用Car 的无参构造方法,而 Car 中只有一个有参数的构造方法,系统不会自动创建无参的构造方法,因此 Car 中没有无参构造方法,编译出错;...

    北大青鸟javaOOP多态Ch03作业全集.rar

    这个"北大青鸟javaOOP多态Ch03作业全集"中的案例可能涵盖了以上提到的各个知识点,包括如何声明和使用多态,以及在实际编程中如何解决多态带来的问题。通过完成这些作业,学习者可以巩固理论知识,提升编程实践能力...

    Java语言中多态的概述.pdf

    在该类中定义一个构造方法和一个表示员工工作的方法work()。该构造方法有一个String类型的参数表示员工的职位,以区分项目组成员。Employee类的具体代码如下: public class Employee { private String position; ...

    C++和Java多态的区别

    - **虚函数表 vs 方法表**:C++中的虚函数调用依赖于虚函数表,而Java则是通过方法表来实现多态。 - **运行时类型信息**:C++提供RTTI机制来支持运行时类型识别,Java则通过方法表和JVM的动态绑定机制来实现。 - **...

    Java语言中的 覆盖重载和多态

    Java语言中的覆盖(Override)和重载(Overload)以及多态(Polymorphism)是面向对象编程的重要概念,它们是实现代码复用和灵活性的关键。 **多态性(Polymorphism)** 多态性是Java中一种允许一个接口有多种实现的方式。...

    java继承与多态PPT教案学习.pptx

    3. 父类的含参数构造方法,子类可以通过在自己构造方法中使用super关键字来调用,但这个调用语句必须是子类构造方法的第一个可执行语句。 例如, class appl5_2 extends superclass,这里appl5_2类继承自superclass...

    Java模式设计之多态模式与多语言支持

    ### Java模式设计之多态模式与多语言支持详解 #### 引言 本文将深入探讨在实际项目中如何运用多态模式以及如何实现多语言支持。案例来自于一个面向全球消费者的华尔街金融网站项目,该网站需要支持至少19种语言,...

    第5章(接口与多态).ppt

    在 Java 中,构造方法与多态有关。构造方法是类的特殊方法,用于初始化对象的状态。构造方法可以是多态的,通过方法覆盖实现。 内部类是 Java 中的一种机制,它允许在一个类中定义另一个类。内部类可以访问外部类的...

    Java语言程序设计ppt第十一章(继承和多态)

    super关键字用于调用父类的构造方法和方法,在子类中可以使用super关键字来调用父类的方法。 四、方法覆盖 在子类中,可以覆盖父类的实例方法,使用@Override注解来标注覆盖的方法。 五、多态性和动态绑定 多态...

    java继承与多态教学及练习

    1继承的概念 2继承的实现 3变量隐藏与方法覆盖 4super关键字 5 子类的构造顺序 6Object类 7 final关键字

    java编程第八讲----多态

    第八讲 多态 1、再谈向上类型转换(upcasting) 忘记对象的类型 2、多态机理 方法绑定(method binding) ... 构造方法中多态方法的行为 5、利用继承设计 纯粹继承与扩展 向下类型转换及运行时类型辨识

    完整版精品java教程 清华大学新版Java课件 Java语言程序设计(第2版) 第5章 接口与多态(共89页).pptx

    构造方法与多态的关系在于,当一个类继承自另一个类时,子类可以重写父类的构造方法。多态允许我们使用父类的构造方法创建子类的对象,这在进行类的实例化时提供了灵活性。 5.6 内部类 内部类是Java中的一个特色,...

    java中的继承(子类调用父类构造方法还不懂).doc

    Java 中的继承(子类调用父类构造方法还不懂) Java 中的继承是指一个类可以继承另一个类的属性和方法,这样可以实现代码的复用和提高开发效率。在 Java 中,继承使用关键字 `extends` 来实现。 Java 中继承的注意...

    java学习资料-Java继承和多态

    Java 继承和多态是面向对象编程中的核心概念,它们是Java中实现代码复用和灵活设计的关键机制。在Java中,继承允许一个类(子类)从另一个类(父类)继承特性,而多态则使得不同类型的对象能够共享相同的操作。 ###...

Global site tag (gtag.js) - Google Analytics