`

Java 中的多态机制

阅读更多
2009-07-04   星期六
    一直以来,对Java中的多态机制总是不太明白,今天看过Thinking in Java,并Google了一下,现总结如下,但总结的一定不全,也有不对的地方,希望大家指出。

1。多态的两种表现形式
(1)方法重载
    发生在同一个类中,同名的但参数类型或参数个数不同的方法。
    注:a)重载方法可以有不同的返回类型
        b)但不能仅依靠方法返回类型的不同来区分两个同名方法,所以直接可以对重载方法进行区分的是:参数的类型、参数的个数、参数的顺序
(2)方法重写
    发生在父类与子类中,在子类中重写了父类/超类中的同名方法,在调用子类的该同名方法时父类中的同名方法将被“屏蔽”
2。多态的实质
   (1)运行时刻绑定/动态绑定
   (2)向上转型/向下转型(但其运行的原理现在我还不懂,即:向上/下转型的实现原理)
3。多态带来的方法调用顺序
   (1)方法调用优先级由高到低:
        this.method(O)--->super.method(O)---->
        thismethod((super)0)----->super.method((super)0)
   (2)SupeerClass sub = new SubClass():情况的讨论
    1)对象sub向外暴露的接口全部为超类/父类中的方法,而SubClass中的特有的方法将  被“屏蔽”;
    2)若SubClass中重写了SuperClass中的方法,则在调用该方法时,父类中的该方法将被“屏蔽”。

4。多态发生的条件/限制:并不是所有的事物都可以动态地发生的
    多态,并不是所有的事物都可有的特性,只有普通方法才会表现出多态性。
    1)普通方法:final、static之外的所有方法
    2)private方法默认为final类型的方法
    3)所有的访问域都是不可多态的
      访问域,即:在构造方法之外的定义的所有的成员变量和赋值语句相关的变量,这些变量是在编译时刻就决定了的,所以根本就不会发生所谓的“运行时刻绑定”,所以也就不会发生多态。
     如:在SuperClass类中定义了public int age = 0;在SubClass中也定义了public int age = 10,则这个age是无法多态进行的,即:在子类中只有一个age,并且其值为10,而实际情况是:在子类SubClass中有两个age,也就有两份不同的存储,分别是从父类中继承的和自己本身所有,而二者完全没有任何关系。
分享到:
评论

相关推荐

    java中多态的内存分析

    多态性分为编译时多态和运行时多态,其中运行时多态是Java中最常见的形式,也称为动态绑定。在深入探讨Java中多态的内存分析之前,我们需要先理解一些基本概念。 首先,了解Java内存模型至关重要。Java程序运行时...

    深入Java核心 Java中多态的实现机制编程资料

    ### 深入Java核心:Java中...通过以上讨论,我们可以看到Java中的多态机制是如何工作的,以及它是如何提高代码的复用性和灵活性的。多态是Java面向对象编程的核心概念之一,掌握好它对于编写高质量的Java程序至关重要。

    java多态机制

    ### Java多态机制详解 #### 一、引言 多态是面向对象编程的重要特性之一,它使得程序设计更加灵活且易于扩展。Java作为一种广泛使用的面向对象编程语言,其多态机制是理解Java编程的关键所在。本文将详细介绍Java...

    Java多态的实现机制

    Java多态的实现机制 Java 多态的实现机制是面向对象程序设计中代码重用的一个重要机制。多态性是 Java 的三大属性之一,在开发中很重要的一个环节。多态性使对象能够调用正确的方法版本,从而提高代码的重用性和...

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

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

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

    Java中的多态行为主要包括方法的重写(Override)和重载(Overload)。 首先,多态的实现机制基于Java的动态绑定(Dynamic Binding)。在Java中,当一个基类引用指向一个派生类对象,并调用方法时,实际执行的是...

    C++和Java多态的区别

    - **异常处理**:C++中的多态机制允许更灵活地处理异常,可以通过派生类覆盖基类的异常处理函数;而Java则更侧重于异常的统一处理框架。 #### 五、总结 C++和Java都提供了强大的多态支持,但其实现机制有所不同。...

    java 多态 经典讲解

    在多态的场景下,私有方法不参与多态机制,因为它们不在继承链中可见。试图在子类中置换父类的私有方法会导致编译错误或运行时行为不符合预期。理解这一点对于避免潜在的bug至关重要。 #### 结论 Java的多态是实现...

    java基础-java多态详解

    Java 多态是 Java 编程语言中的一种基本概念,它允许开发者定义一个接口,并且可以通过不同的类来实现该接口。多态性是 Java 面向对象编程的核心机制之一,它使得程序更加灵活、可维护和可扩展。 多态的体现 多态...

    java中实现多态的机制Java系列2021.pdf

    在Java编程语言中,多态是面向对象编程的核心概念之一,它允许我们通过共通接口调用不同对象的行为。多态可以实现代码的可...在学习和应用Java多态时,开发者需要掌握这些机制和特性,以便更好地设计和实现应用程序。

    java 多态.docx

    在Java编程语言中,多态(Polymorphism)是一种核心特性,它允许我们设计更加灵活、可扩展的代码。多态使得一个接口可以有多种不同的实现或者表现形式,也就是说,同一段代码可以处理不同类型的数据。这主要通过继承...

    Java中的多态.pptx.pptx

    Java中的多态是面向对象编程的关键特性之一,它允许一个接口或者抽象方法被多个不同的类实现,从而使得代码更加灵活且可扩展。多态的概念基于一个接口可以有多种不同的实现方式,增强了程序的多样性和适应性。 在...

    应用Java的多态机制取代多分支语句.pdf

    在java程序设计的代码编写过程中,经常会遇要到对很多状态、类型、规格等的判断场景,在这类场景中,代码编写时一般是用if或switch语句来进行多分支语句判断,如果后面这些状态、类型、规格等变化,判断的语句就要进行...

    java的编译时多态和运行时多态

    Java 编译时多态和运行时多态是 Java 语言中两个重要的概念,它们都是多态性的实现方式,但它们在实现机制和应用场景上有所不同。 编译时多态 编译时多态是指在编译期根据参数列表的不同来区分不同的函数,这时...

    java多态机制原理特点详解

    Java 多态机制是 Java 语言中的一种基础机制,旨在实现对象的多种形态特性。多态机制的原理是通过父类或接口的引用指向子类,从而实现了一个对象多种形态的特性。 多态机制的特点是指向子类的父类引用由于向上转型...

    Java多态实现

    Java多态实现是面向对象编程中的一个核心概念,它允许我们使用父类的引用变量来指向子类的对象,从而在运行时决定所调用的方法。这一特性极大地增强了代码的灵活性和扩展性,使得代码能够更好地应对未来的需求变化。...

    Java柔性多态功能设计与实现.pdf

    在 Java 中,柔性多态功能设计与实现可以通过接口、抽象类、继承和多态等机制来实现。例如,通过定义一个抽象类 Shape,其中包含了一个抽象方法 getArea(),然后,子类 Circle 和 Rectangle 都继承自 Shape,并实现...

Global site tag (gtag.js) - Google Analytics