• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JSP > 运行时实现Java的多态性

运行时实现Java的多态性

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了实现运行时的多态性,运行时的多态性,运行时的多态,java运行时异常,java运行时找不到主类等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
运行时多态性是面向对象程序设计代码重用的一个最强大机制,动态性的概念也可以被说成“一个接口,多个方法”。Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制,下面就继承和接口实现两方面谈谈java运行时多态性的实现。

  一、通过继承中超类对象引用变量引用子类对象来实现

  举例说明:

  //定义超类superA
  class superA
  {
  int i = 100;
  void fun()
  {
  System.out.println(“This is superA”);
  }
  }
  //定义superA的子类subB
  class subB extends superA
  {
  int m = 1;
  void fun()
  {
  System.out.println(“This is subB”);
  }
  }
  //定义superA的子类subC
  class subC extends superA
  {
  int n = 1;
  void fun()
  {
  System.out.println(“This is subC”);
  }
  }

  class Test
  {
  public static void main(String[] args)
  {
  superA a;
  subB b = new subB();
  subC c = new subC();
  a=b;
  a.fun(); (1)
  a=c;
  a.fun(); (2)
  }
  }

  运行结果为:

  This is subB
  This is subC

  上述代码中subB和subC是超类superA的子类,我们在类Test中声明了3个引用变量a, b, c,通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。也许有人会问:“为什么(1)和(2)不输出:This is superA”。java 的这种机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。

  所以,不要被上例中(1)和(2)所迷惑,虽然写成a.fun(),但是由于(1)中的a被b赋值,指向了子类subB的一个实例,因而(1)所调用的fun()实际上是子类subB的成员方法fun(),它覆盖了超类superA的成员方法fun();同样(2)调用的是子类subC的成员方法fun()。

  另外,如果子类继承的超类是一个抽象类,虽然抽象类不能通过new操作符实例化,但是可以创建抽象类的对象引用指向子类对象,以实现运行时多态性。具体的实现方法同上例。

  不过,抽象类的子类必须覆盖实现超类中的所有的抽象方法,否则子类必须被abstract修饰符修饰,当然也就不能被实例化了。 </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 运行时实现Java的多态性

相关文章

  • 2017-05-11JSP application(return String)用法详例
  • 2017-05-11用JSP生成静态页面
  • 2017-05-11jsp中include指令静态导入和动态导入的区别详解
  • 2017-05-11Hibernate使用中防止SQL注入的几种方案
  • 2017-05-11Java输出系统当前的日期(年月日时分秒毫秒)
  • 2017-05-11JSP由浅入深(9)—— JSP Sessions
  • 2017-05-11在jsp中用bean和servlet联合实现用户注册、登录
  • 2017-05-11Eclipse开发Hibernate应用程序
  • 2017-05-11按IE后退按钮时让JSP不读缓存
  • 2017-05-11我认为JSP有问题(上)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • JSP实现浏览器关闭cookies情况下的会话管理
    • 在JSP中处理虚拟路径
    • JSP学习心得
    • jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法
    • 通用JSP页面 jsp入门级文章
    • jsp生成静态页面的方法
    • 品味Spring 的魅力
    • eclipse配置tomcat开发Dynamic Web Project环境图解
    • 使用JavaBean创建您的网上日历本(2)
    • jsp中点击图片弹出文件上传界面及预览功能的实现

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有