Java的扩展机制之三——多态

多态是面向对象的第三大特征,意为一个名字有多种语言,即在程序设计中一种定义,多种实现,Java实现多态由向上转型和动态绑定机制结合完成,即在继承关系下每个子类都定义有重写的方法,利用向上转型机制将子类对象转化为父类对象,转型后的父类对象通过动态绑定机制自动调用转换前所属子类的方法
【1】方法的重载:一个类中允许同时存在一个以上方法名相同,但方法签名(方法名+参数)不同(类型,个数)的同名方法
(1)方法的重载与方法的重写均能体现面向对象的多态性,但重载主要用于一个类中实现若干个重载的方法,重写主要用于子类继承父类时,对父类方法的重新实现
(2)构成重载的条件
1.参数类型不同
public static int add ( int a ) {
          return a ;
// 定义与第一个方法相同名称、参数类型不同的方法
      public static double add ( double a , double b ) {
          return a + b ;
} 2.参数个数不同
public static int add ( int a ) {
          return a ;
  // 定义与第一个方法参数个数不同的方法
      public static int add ( int a , int b ) {
          return a + b ;
} 3.参数顺序不同

public static int add ( int a , double b ) {
          return ( int ) ( a + b ) ;
      }
      // 这个方法与前一个方法参数次序不同
      public static int add ( double a , int b ) {
          return ( int ) ( a + b ) ;

【2】绑定
(1)静态绑定(前期绑定):编译时,编译器判断应当调用那个方法,发生在程序运行前。
使用:对象的声明与对象创建时是同一个类,使用(对象+.)的方式调用类的数据
(2)动态绑定(后期绑定):程序运行时jvm根据对象实际类型判断该调用那个方法
使用:运行时才把方法调用与方法所属类关联在一起,即对象的声明与对象创建时不是同一个类但具有父子类关系,使用(对象+.)调用的是实际创建对象的类的方法
【3】类的转型
(1)向上转型:子类的对象可以赋值给父类的对象,即子类对象可以向上转型为父类类型
【【1】】转型后的子类对象只能调用父类定义的方法,无法使用子类独有的数据
【【2】】以为动态绑定机制,Java能识别出对象转化之前的类型,并调用该类中对应的方法
【【3】】调用父类方法时父类类型可代表他的所有子类,作为参数

class Quadrangle { // 四边形类
      public static void draw ( Quadrangle q ) { // 四边形类中的方法
          // SomeSentence
public class Parallelogram extends Quadrangle { // 平行四边形类,继承了四边形类
      public static void main ( String args []) {
          Parallelogram p = new Parallelogram () ; // 实例化平行四边形类对象引用
          draw ( p ) ; // 调用父类方法

(2)向下转型:将较为抽象的类(父类)转化成具体的类(子类)
问题:越具体的类特性越多,从具体到抽象会减少类的特性(类似double到int)
解决:显示类型转化(强制类型转化)将子类转化成父类,其方法的调用规则参照继承中的转化规则
【4】多态的实现
(1)在继承关系下重写方法
(2)将子类对象向上转型为父类类型,父类类型调用同名方法,借动态绑定识别具体执行那个类的方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems公司于1995年5月正式发布。它的设计目标是“一次编写,到处运行(Write Once, Run Anywhere)”,这意味着开发者可以使用Java编写应用程序,并在支持Java的任何平台上无需重新编译即可运行,这得益于其独特的跨平台性,通过Java虚拟机(JVM)实现不同操作系统上的兼容。 Java的特点包括: 面向对象:Java全面支持面向对象的特性,如封装、继承和多态,使得代码更易于维护和扩展。 安全:Java提供了丰富的安全特性,如禁止指针运算、自动内存管理和异常处理机制,以减少程序错误和恶意攻击的可能性。 可移植性:Java字节码可以在所有安装了JVM的设备上执行,从服务器到嵌入式系统,再到移动设备和桌面应用。 健壮性与高性能:Java通过垃圾回收机制确保内存的有效管理,同时也能通过JIT编译器优化来提升运行时性能。 标准库丰富:Java拥有庞大的类库,如Java SE(Java Standard Edition)包含基础API,用于开发通用应用程序;Java EE(Java Enterprise Edition)提供企业级服务,如Web服务、EJB等;而Java ME(Java Micro Edition)则针对小型设备和嵌入式系统。 社区活跃:Java有着全球范围内庞大的开发者社区和开源项目,持续推动技术进步和创新。 多线程支持:Java内建对多线程编程的支持,使并发编程变得更加简单直接。 动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的角色,是现代软件开发不可或缺的重要工具之一。
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems公司于1995年5月正式发布。它的设计目标是“一次编写,到处运行(Write Once, Run Anywhere)”,这意味着开发者可以使用Java编写应用程序,并在支持Java的任何平台上无需重新编译即可运行,这得益于其独特的跨平台性,通过Java虚拟机(JVM)实现不同操作系统上的兼容。 Java的特点包括: 面向对象:Java全面支持面向对象的特性,如封装、继承和多态,使得代码更易于维护和扩展。 安全:Java提供了丰富的安全特性,如禁止指针运算、自动内存管理和异常处理机制,以减少程序错误和恶意攻击的可能性。 可移植性:Java字节码可以在所有安装了JVM的设备上执行,从服务器到嵌入式系统,再到移动设备和桌面应用。 健壮性与高性能:Java通过垃圾回收机制确保内存的有效管理,同时也能通过JIT编译器优化来提升运行时性能。 标准库丰富:Java拥有庞大的类库,如Java SE(Java Standard Edition)包含基础API,用于开发通用应用程序;Java EE(Java Enterprise Edition)提供企业级服务,如Web服务、EJB等;而Java ME(Java Micro Edition)则针对小型设备和嵌入式系统。 社区活跃:Java有着全球范围内庞大的开发者社区和开源项目,持续推动技术进步和创新。 多线程支持:Java内建对多线程编程的支持,使并发编程变得更加简单直接。 动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的角色,是现代软件开发不可或缺的重要工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值