面向对象编程中的多态(polymorphism)

转载 2015年11月17日 19:26:58

多态的定义:如果编译时和运行时类项不一样就会出现所谓的多态(polymorphism),多态可以向上转型。

  • 编译时类项:声明该变量时使用的类型决定
  • 运行时类项:实际赋给该变量的对象决定

实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。

多态存在的三个必要条件:

一、要有继承;
二、要有重写;
三、父类引用指向子类对象。

父类引用生成子类对象,那这个引用只能调用在父类中已经定义过的属性和方法,而对子类自己新定义的属性和方法则不能访问。

class A {  
    public String show(D obj){  
           return ("A and D");  
    }   
    public String show(A obj){  
           return ("A and A");  
    } 
}   

class B extends A{ 
    public String show(A obj){  
           return ("B and A");  
    }   
    public String show(B obj){  
           return ("B and B");  
    } 
}  

class C extends B
{
}   
class D extends B
{
} 

public class MultiTest{ 
public static void main(String[] args){ 
        A ab = new B();  
        B b = new B();  
        C c = new C(); 
        System.out.println(ab.show(b));   
        System.out.println(ab.show(c)); 
        System.out.println(b.show(c));
        //结果为:B A ,B A ,B B
} 
} 

A ab=new B();:ab是一个父类引用,之后执行ab.show(b),这时ab先从父类中查找方法,与之匹配的只有show(A obj)方法,而且发现子类重写了该方法,这时动态链接到子类的show(A obj)方法。

b.show(c);:这里,b中有show(A obj)方法和show(B obj)方法,继承层次为C->B->A,根据重载的最近匹配原则,会调用show(B obj)方法。

面向对象-多态

OC面向对象—多态 一、基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态。 在使用多态是,会进行动态检测,以调用真实的对象方法。 多态在代码中的体现即父类指针指向子类对象。...

面向对象在javascript中的三大特征之多态

多态 从某种意义上来说,多态是面向对象中重要的一部分,也是实施继承的主要目的。 一个实例可以拥有多个类型,它既可以是这种类型,也可以是那种类型,这种多种状态被称为类的多态。 继承 继承本身是多态的...

面向对象_多态中的对象变化内存图解

/* */ class Animal{ public void eat(){ System.out.println("该吃饭了"); } } class Dog extends Anima...

各大IT公司校园招聘程序猿笔试、面试题集锦

各大IT公司校园招聘程序猿笔试、面试题集锦 分类: 面试珠玑2012-09-09 11:38 18286人阅读 评论(9) 收藏 举报 面试招聘算法数据结构数据库阿里巴巴 目录(?)[+...
  • mmbbz
  • mmbbz
  • 2017年02月21日 09:10
  • 3594

一个资深面试官的测试工程师招聘心得

最近一段时间都在做集中招聘,参加了许多面试,累个半死。加上之前在团队中最近几年也做了不少面试,关于测试工程师招聘的话题,刚才没事特意google了一下,除了一些面试题外居然没有几篇心得方面的文章。上午...

面向对象编程(多态封装)

  • 2010年12月04日 14:38
  • 682KB
  • 下载

Java-面向对象编程-三大特性之多态

我们前面已经介绍了面向对象编程的三大特性之二,今天就介绍最后一个特性-多态。 什么叫多态?从字面上理解就是多种形态,即对同一个客体,可以有多种不同的形式。就好像糖一样,有多种口味,你想吃什么口味的就...

Python 面向对象编程(三)继承与多态

在前面一篇文章中谈到了类的基本定义和使用方法,这只体现了面向对象编程的三大特点之一:封装。下面就来了解一下另外两大特征:继承和多态。 在Python中,可以让一个类去继承一个类,被继承的类称为父类或者...

Python之面向对象编程:封装、继承、多态

Python是面向对象编程的语言,具有封装,继承,多态的特性。

C++:面向对象编程(封装、继承、多态等)

面向对象编程的关键思想是 多态性 。在调用虚函数时,引用和指针的静态类型与动态类型可以不同,这是支持多态性的基石。1. 继承和动态绑定 继承:派生类能够继承基类定义的成员,派生类可以无需改变而使用...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象编程中的多态(polymorphism)
举报原因:
原因补充:

(最多只允许输入30个字)