`
yatou_0209
  • 浏览: 37598 次
  • 性别: Icon_minigender_2
  • 来自: 大连
社区版块
存档分类
最新评论

白话文讲多态

    博客分类:
  • java
阅读更多
对于多态的理解一直都仅限于那三句话:
1.父类的引用,引用子类型的实例
2.子类型里面重写父类型的方法
3.父类型的引用调用子类型的重写后的方法
但是其什么意思一直都是懵懵懂懂。也许比较厉害的人,一看就知道什么意思。呵呵,没办法,我就是比较笨,看不懂,所以,今天用通俗易懂的白话文,来补充一下多态。(稍微比较厉害的人,可以飘过了。

多态中,虽然走的是子类中的方法,但是可用的只有从父类中继承的方法。
     如果,子类中的方法,在父类中没有,那么在判断输出结果时,此方法不存在。
     父类中有这个方法,子类中重写了此方法,那么输出结果以子类中的为准。
     父类中有这个方法,子类中没有重写此方法,那么输出结果以父类中的为准。
若:
  class A extends B{}
  B b = new A();
  那么A中新增的方法将不会运行,只会走A中重写B类的方法,和B类中的方法。如果B继承了C的类,那么还会走C中B没有实现的方法。

这是我通过一个例子,理解出来的,如果有不对的地方,还请见谅,或者,帮我指正也好。
分享到:
评论
10 楼 yatou_0209 2011-12-21  
BuN_Ny 写道
你想太多了。多态更多的是思想层面的东西,继承是实现层面的东西,封装则是基础层面的东西。三者都是描述面向对象的,没有那么大的区分。
多态的目的主要是忽略对象之间的差异,实现依赖倒转。上层方法一般是一种承诺,下层方法才是实现。

啊~~~~~哦。了解了,谢谢。。。嘿嘿
9 楼 yatou_0209 2011-12-21  
BuN_Ny 写道
你想太多了。多态更多的是思想层面的东西,继承是实现层面的东西,封装则是基础层面的东西。三者都是描述面向对象的,没有那么大的区分。
多态的目的主要是忽略对象之间的差异,实现依赖倒转。上层方法一般是一种承诺,下层方法才是实现。

我只是一直搞不清楚,所以才写了这篇文章,省的以后会忘,我说的不见得是对的,只是我自己的理解罢了。。有不对的地方谢谢指教。。
8 楼 BuN_Ny 2011-12-20  
父类中有这个方法,子类中没有重写此方法,那么输出结果以父类中的为准。
高手一直都睡床,你没有任何异议,今天你当班,睡的是床还是吊绳?
7 楼 BuN_Ny 2011-12-20  
父类中有这个方法,子类中重写了此方法,那么输出结果以子类中的为准。
高手一直都吃白菜,你非要吃萝卜,请问,今天你当班,被吃掉的是萝卜还是白菜?
6 楼 BuN_Ny 2011-12-20  
如果,子类中的方法,在父类中没有,那么在判断输出结果时,此方法不存在。
有一个高手,他只会吃饭、睡觉,但是今天他不在,你来代替他,而你至少要会吃饭、睡觉才能算高手吧?有趣的是,你还会打豆豆,那么那个高手会打豆豆么?
5 楼 BuN_Ny 2011-12-20  
你想太多了。多态更多的是思想层面的东西,继承是实现层面的东西,封装则是基础层面的东西。三者都是描述面向对象的,没有那么大的区分。
多态的目的主要是忽略对象之间的差异,实现依赖倒转。上层方法一般是一种承诺,下层方法才是实现。
4 楼 yatou_0209 2011-12-15  
long2010 写道
引用
若:
  class A extends B{}
  B b = new A();
  那么A中新增的方法将不会运行,只会走A中重写B类的方法,和B类中的方法。如果B继承了C的类,那么还会走C中B没有实现的方法。

说明一下,如果B继承了C类,那么C类中声明的非私有方法即使B类中没有重写,B类中也是可以使用的。不能说B中没有实现这个方法,只能说没有重写这个方法而已。需要注意的一点:必须是非私有的方法。


了解。。受教了。。。
3 楼 long2010 2011-12-15  
引用
若:
  class A extends B{}
  B b = new A();
  那么A中新增的方法将不会运行,只会走A中重写B类的方法,和B类中的方法。如果B继承了C的类,那么还会走C中B没有实现的方法。

说明一下,如果B继承了C类,那么C类中声明的非私有方法即使B类中没有重写,B类中也是可以使用的。不能说B中没有实现这个方法,只能说没有重写这个方法而已。需要注意的一点:必须是非私有的方法。
2 楼 yatou_0209 2011-11-22  
败家叔叔。。。
1 楼 gerrard_ok 2011-11-21  
漂你妹啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

相关推荐

    LabVIEW编程的实用技巧系列第2讲——多态VI的创建.avi

    LabVIEW编程的实用技巧系列第2讲——多态VI的创建.avi

    labview创建多态VI

    创建多态VI在LabVIEW中的实现主要依赖于函数选板(Function Palette)上的数据类型结构(Data Type Structure)。下面将详细介绍如何在LabVIEW中创建和使用多态VI。 1. **定义多态VI的基本结构** 在LabVIEW中,一...

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

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

    一个HW 多态题目 一个HW 多态题目

    接着,我们来看多态的两种主要形式:编译时多态和运行时多态。编译时多态通常通过函数重载和运算符重载实现,编译器在编译阶段就能确定调用哪个函数。而运行时多态则是在程序运行时才决定调用哪个函数,这是通过虚...

    多态代码实例

    在编程领域,多态(Polymorphism)是一个关键概念,尤其在面向对象编程中发挥着重要作用。多态允许我们使用一个通用的接口来处理不同类型的对象,提供了代码的灵活性和可扩展性。虚函数(Virtual Function)是实现...

    Java 多态应用,掌握多态

    多态分为编译时多态和运行时多态。编译时多态主要通过方法的重载(Overloading)实现,即在同一个类中定义多个同名但参数列表不同的方法。而运行时多态则是通过方法的重写(Overriding)和接口实现实现,它依赖于...

    多态的练习案例

    在编程领域,多态(Polymorphism)是面向对象编程中的一个重要概念,它允许我们用一个接口处理多种不同的数据类型。多态性使得程序更加灵活,可扩展性更强,能够提高代码的重用率。本练习案例将深入探讨多态的常见...

    Java多态的讲解

    Java多态的讲解

    java多态小结

    ### Java多态详解 #### 什么是多态? 多态(Polymorphism)是面向对象编程的一个核心特性,指的是一个接口可以被多个类所实现或一个类可以被多个类所继承,进而表现出不同的行为。在Java中,多态主要体现在两个...

    java多态的总结

    在Java中,多态分为编译时多态和运行时多态。编译时多态主要体现在方法的重载(Overloading),即在同一个类中可以有多个同名方法,但参数列表不同。编译器会根据传入参数的类型和数量来决定调用哪个方法。运行时...

    原来多态还可以这样

    这主要体现在两个方面:静态多态(编译时多态)和动态多态(运行时多态)。静态多态通常通过函数重载或运算符重载实现,而动态多态则依赖于接口、继承和虚函数等机制。 1. 静态多态:在编译期间就能确定调用哪个...

    基于C++的多态模式编写类的代码多态.docx

    在C++中,多态(Polymorphism)是面向对象编程的一个核心概念,它允许我们使用一个接口来表示多种不同的类型。多态性使得代码更加灵活,可扩展性更强,可以减少代码重复,并提高代码的复用性。在这个文档中,通过两...

    封装继承多态总结

    封装继承多态总结

    java中多态实现

    java多态实现的课件,给那些需要的人 讲述了java多态的概念、分类、实现 综合案例讲解、总结多态的作用

    多态PPT文件!!!!

    在IT行业中,多态(Polymorphism)是一个核心概念,主要在面向对象编程(Object-Oriented Programming, OOP)中出现。它允许我们使用一个接口来表示多种不同的类型,从而提高了代码的灵活性、可扩展性和可重用性。在...

    java 多态 经典讲解

    ### Java多态经典讲解 #### 一、理解Java多态 多态,作为面向对象编程的三大特性之一,是继抽象和继承之后的关键概念。它允许我们以统一的接口处理不同类型的对象,增强了代码的灵活性和可扩展性。在Java中,多态...

    Animal(多态练习)

    "Animal(多态练习)"这个主题,显然是为了帮助开发者理解并掌握多态这一面向对象的核心概念,同时结合设计模式的基础应用。 多态(Polymorphism)是面向对象三大特性(封装、继承、多态)之一,它允许我们使用一个...

    易语言的继承多态演示

    在易语言中,继承和多态是面向对象编程的重要概念,它们在软件设计中起到关键作用,允许代码重用并提高灵活性。下面将详细解释这两个概念以及如何在易语言中实现它们。 **继承**: 在面向对象编程中,继承是子类...

    国外一款多态引擎asm

    国外一款多态引擎asm 作为代码变形的一项技术

    C++继承与多态例子

    在C++编程语言中,继承和多态是面向对象编程(OOP)的两个核心概念。继承允许我们创建一个新类(子类),它继承了另一个类(父类)的属性和方法,从而实现了代码的重用和扩展。多态则是指同一种行为在不同对象上表现...

Global site tag (gtag.js) - Google Analytics