`
wenzhihua1983
  • 浏览: 81408 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

你真的理解了继承和多态吗?

    博客分类:
  • java
阅读更多
http://www.blogjava.net/sean/archive/2005/06/07/5666.aspx

所谓重写(Override),那是对方法而言的。
class A {
    String s = "[A]";
    String getS() {
        return s;
    }
}

class B extends A{
    String s = "[B]";
    String getS() {
        return s;
    }
}
于是,当我们new B()时,在实际创建的对象中,包含了两个版本的字段s,一个"[A]"(属于A类)一个"[B]"(属于B类)。而方法getS()只有一个版本。这就是在继承过程中字段和方法的区别。也就是说,重写的概念和字段无关。在第16行,我们通过a.s访问的是b这个对象中保留的A类的字段s;而在21行,我们改变的正是这个A类版本的s字段。

多态的精髓在于动态确定对象的行为,而对象的行为体现在方法而非字段,字段代表的更多的是对象的状态。于是只有方法的多态而没有字段的多态。从上面的代码可以看出,不管你用什么类型的变量存放对象b的引用,最终调用的方法版本都是b的真实类型那个版本,这就是多态的威力。

从编译的角度来看,上面代码中的s字段和getS()方法的不同在于:s字段是在编译期静态链接(你可以改变它的值,但是它在对象中的相对地址已经确定好),而getS()方法是在运行期动态链接的。
分享到:
评论

相关推荐

    C++继承与多态例子

    在C++编程语言中,继承和多态是面向对象编程(OOP)的两个核心概念。继承允许我们创建一个新类(子类),它继承了另一个类(父类)的属性和...通过深入理解继承和多态,开发者可以更好地设计和实现面向对象的解决方案。

    javascript中如何实现封装,继承和多态

    javascript中如何实现封装,继承和多态

    浅谈c++的精髓之继承和多态

    ### 面向对象编程与C++中的继承和多态 #### 1. 面向对象编程思想的诞生 面向对象编程(Object-Oriented Programming, OOP)的引入,是为了克服传统面向过程编程的一些局限性。面向过程编程,如C语言,更侧重于按...

    继承和多态笔记.docx

    ### 继承与多态知识点总结 #### 接口概念及作用 - **定义**:接口是一种特殊的数据类型,主要用于定义一组未实现的方法签名。它强制要求任何实现该接口的类必须提供这些方法的具体实现,这有助于提升软件设计的...

    C++经典实例——体现继承和多态

    这个名为“C++经典实例——体现继承和多态”的资源显然是为了帮助开发者深入理解和应用这两个关键特性。下面我们将详细探讨这两个主题以及它们在实际编程中的应用。 首先,我们来看“继承”。继承是面向对象设计的...

    C#实验 事件、继承和多态

    在C#编程语言中,事件、继承和多态是三个非常关键的概念,它们构成了面向对象编程的核心要素。在这个实验中,我们将深入理解这三个概念,并通过实际的编程实践来加深印象。 首先,我们来探讨事件(Event)。事件是...

    Java实验报告——类的继承、多态的应用

    在本实验报告中,我们将深入探讨Java编程中的两个核心概念:类的继承和多态的应用。实验主要目标是加深对抽象类和抽象方法的理解,并掌握如何在实际编码中实现类的继承以及多态性。 首先,让我们理解抽象类和抽象...

    继承与多态程序演示

    在编程领域,继承和多态是面向对象编程(OOP)中的两个核心概念,它们极大地提高了代码的重用性和灵活性。...通过学习这个“继承与多态程序演示”,你可以深入理解这两种机制,并能够在实际项目中有效地应用它们。

    Python之继承和多态共7页.pdf.zip

    Python是一种高级编程语言,以其简洁明了的语法和强大的功能深受程序员喜爱。...在学习Python之继承和多态的过程中,深入理解这两个概念的原理,以及如何在实际项目中应用它们,将对提升编程技能大有裨益。

    java 三大特性--封装、继承和多态理解

    Java编程语言以其强大的功能和广泛的应用而闻名,其中三大特性——封装、继承和多态是其核心概念,对于理解和编写高效、可维护的代码至关重要。 **封装**是面向对象编程的基础,它涉及到将数据(属性)和操作这些...

    教学视频-继承&多态

    在编程领域,继承和多态是面向...通过观看"2-2继承&多态"的教学视频,你可以深入理解这两个概念,并通过提供的源码进行实践操作,巩固理论知识,如有疑问还可以在线提问,这无疑将加速你的编程技能提升,避免走弯路。

    Java 学习课件,继承和多态

    ### Java 学习课件:继承和多态 #### 继承的概念与应用 继承是面向对象编程的一个核心概念,它允许我们定义一类对象获取另一类对象的特性。这种机制可以减少代码冗余,增强代码复用性,并使得类之间的关系更加清晰...

    详解java接口、继承和多态

    ### 详解Java接口、继承和多态 #### 一、Java接口 在Java中,接口是一种定义行为的方式,它提供了一种实现抽象方法的手段。通过接口,开发人员可以为类定义一组方法签名,但不提供这些方法的具体实现。这有助于...

    关于继承和多态的简单练习

    通过查看和分析这些代码,你可以深入理解继承和多态的概念,并从中学习如何在实际项目中有效地运用它们。 总的来说,继承和多态是面向对象编程的关键要素,它们使得代码更加灵活、可扩展且易于维护。通过不断的实践...

    Java继承和多态详解及其综合应用

    使用场景及目标:适用于初学者和有一定经验的开发者进一步理解和掌握Java中的继承和多态,提升代码的可复用性和可扩展性。 阅读建议:读者可以在理解基本概念的基础上,通过示例代码动手实践,加深对继承和多态的...

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

    它为我们提供了构建复杂系统所需的诸多工具和概念,其中继承和多态是两个核心概念。本篇文章将围绕Java继承和多态机制的深入讲解,探索它们是如何促进代码的灵活性和扩展性的。 ### 继承机制 继承,作为面向对象...

    java继承与多态教学及练习

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

    java继承与多态

    本文将详细介绍Java中的继承和多态概念,并通过具体的示例帮助初学者更好地理解这些概念。 #### 二、继承的基础知识 **2.1 继承的定义** 继承是一种创建新类(子类)的方法,这种新类继承了已有类(父类)的特性...

    《java面向对象程序设计-继承和多态》教案.doc

    面向对象编程是Java的核心特性,本教程主要涵盖了三个关键概念:封装、继承和多态,以及相关的访问修饰符和方法修饰符。 封装是面向对象编程的基础,它涉及到将数据(属性)和操作这些数据的方法(行为)组合在一个...

    JAVA封装继承与多态PPT教案学习.pptx

    JAVA 封装继承与多态是面向对象程序设计语言中三个非常重要的概念,正确理解和应用这些概念是编写高质量软件的前提。 在实际应用中,封装、继承和多态三个概念都是相互关联、相互影响的。正确地使用这些概念可以...

Global site tag (gtag.js) - Google Analytics