`

转:Java中多态性的实现

阅读更多

Java中多态性的实现

什么是多态

  1. 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。
  2. 多态的定义指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
  3. 实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
  4. 多态的作用消除类型之间的耦合关系
  5. 现实中,关于多态的例子不胜枚举。比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。

下面是多态存在的三个必要条件,要求大家做梦时都能背出来!

多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象

 多态的好处

1.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
3.接口性(interface-ability)。多 态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3 所示。图中超类Shape规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和 Sphere为了实现多态,完善或者覆盖这两个接口方法。
4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。


Java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。

 

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(B obj)...{  
                return ("B and B");  
         }  
         public String show(A obj)...{  
                return ("B and A");  
         }   
}  
class C extends B...{}   
class D extends B...{}

 

        A a1 = new A();  
        A a2 = new B();  
        B b = new B();  
        C c = new C();   
        D d = new D();   
        System.out.println(a1.show(b));   ①  
        System.out.println(a1.show(c));   ②  
        System.out.println(a1.show(d));   ③  
        System.out.println(a2.show(b));   ④  
        System.out.println(a2.show(c));   ⑤  
        System.out.println(a2.show(d));   ⑥  
        System.out.println(b.show(b));    ⑦  
        System.out.println(b.show(c));    ⑧  
        System.out.println(b.show(d));    ⑨

 

①   A and A
②   A and A
③   A and D
④   B and A
⑤   B and A
⑥   A and D
⑦   B and B
⑧   B and B
⑨   A and D

分享到:
评论

相关推荐

    Java多态性的实现.pdf

    Java多态性的实现.pdf

    多态性实现机制在C 与JAVA中的比较分析.pdf

    熟练使用多态性是程序设计者运用面向对象方法进行程序设计的关键,而理解多态性实现机制则是熟练使用多态性的关键。为充分理解多态性的实现机制,采用比较方法,深入分析比较了C++和java的多态性在使用方法、要点、内部...

    Java运行时多态性的实现.rar

    Java运行时多态性的实现.rar

    JAVA多媒体开发手册 JMF API

    JAVA多媒体开发手册,Java多媒体框架(JMF)中包含了许多用于处理多媒体的API。它是一个相当复杂的系统,完全了解这个系统可能需要花上几周的时间,但是这篇文章将主要介绍JMF的几个核心接口和类,然后通过一个简单...

    类的多态性

    该代码是用来实现类的多态性的,用JAVA实现,可以给朋友们做个参考。

    基于反射机制的数据流Java多态性实现及研究.pdf

    基于反射机制的数据流Java多态性实现及研究.pdf

    Java中多态性的实现方式

    主要介绍了Java中多态性的实现方式,什么是多态?通过简单的一道题目帮大家理解java多态性,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    常见的Java面试题30题附答案.pdf

    答案:Java中的多态性是指一个对象可以表现出多种形态。这是通过使用接口、继承和重写来实现的。多态性可以提高代码的可读性和可维护性。 5. 请解释一下什么是Java中的泛型? 答案:Java中的泛型是一种允许你在类、...

    【深入Java虚拟机(5)】多态性实现机制-静态分派与动

    【深入Java虚拟机(5)】多态性实现机制——静态分派与动态分派编程开发技术共5页.pdf.zip

    运行时实现Java的多态性

    Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制,下面就继承和接口实现两方面谈谈java运行时多态性的实现。 一、通过继承中超类对象引用变量引用子类对象来实现 举例...

    Java运行时多态性的实现

    上例中类B和类C是实现接口InterA的两个类,分别实现了接口的方法fun(),通过将类B和类C的实例赋给接口引用a而实现了方法在运行时的动态绑定,充分利用了“一个接口,多个方法”展示了Java的动态多态性。  需要注意...

    Java开发详解.zip

    020607_【第6章:面向对象(高级)】_对象的多态性笔记.pdf 020608_【第6章:面向对象(高级)】_instanceof关键字笔记.pdf 020609_【第6章:面向对象(高级)】_抽象类与接口的应用笔记.pdf 020610_〖第6章:面向...

    使用Java多态性实现一个简单的动物园管理系统.txt

    这个代码实现了一个简单的动物园管理系统。首先定义了一个抽象类Animal,其中有一个抽象方法makeSound()。然后分别定义了Lion和Elephant两个子类,它们都继承了Animal类,并实现了makeSound()方法。在Zoo类中,定义...

    C#类的多态性详解

    在编译时体现的多态性是通过方法的重载来实现的。方法的重载我们听过,就是一个类对象调用若干同名,但参数类型、个数不同。类对象是根据参数类型,个数来决定调用哪个同名方法,实现何种操作。C#语言的方法重载与...

    JAVA做员工管理系统

    简单的员工管理系统,支持员工查询与管理员进行员工管理,员工调动,员工工资管理,数据库为SQL2005,myeclipse8.5,制作过程详细

    第一章JAVA面向对象的程序设计.doc

    类的定义,对象的生成,封装、继承及多态性 4:JAVA程序的健壮性(try…); 5:JAVA的包、目录及路径; 6:java的applet; 7:JAVA的类库(java.lang.*; java.utli.*) 8: JAVA深入(JDBC数据库编程,java.serverlet.*...

    java面试题进阶版附答案.docx

    一、多态性:解释了Java中多态性的概念,以及通过继承和方法重写实现多态性的方式。 二、异常处理:介绍了Java中的异常处理机制,包括使用try-catch语句块捕获和处理异常,以及列举了几个常见的异常类。 三、线程...

    java课程设计:日历记事本

    4、在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。 5、该系统的要求: (1)显示信息:用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期。 (2)定时提醒:...

    Java 实验 用接口实现求三角形,圆形,矩形的面积和周长

    用接口设计并实现面积与周长计算 要求:①定义一个接口,其中包含一个计算面积的抽象方法和一个计算周长的抽象方法;②输入数据为圆的半径、三角形的三条边长、矩形的长和宽,对于用户的输入要有友好提示;③程序...

    java 编写 多媒体播放器程序

    《Java开发典型模块大全》一书中的源代码。 经典代码! 非常值得借鉴和学习!

Global site tag (gtag.js) - Google Analytics