编程语言
首页 > 编程语言> > Java编程设计---多态

Java编程设计---多态

作者:互联网

什么是多态

一个方法的不同实现形式,即一个类可以定义它们唯一的行为,同时共享父类的某些相同特征。根据多态的理解方式,可以分为静态多态和动态多态

静态多态:对象的不同方法可以用同一个方法名,也就是程序在编译的时候就已经知道调用的方法;实现方式是重载

动态多态:同一个对象根据不同的消息执行对应的行为,让对象根据消息来确定要执行的行为,就是要在运行中才能确定方法的对象;实现方式为重写

 

 

转型

向上转型:从低精度的数据类型向高精度的数据类型转换

向下转型:和向上转型相反,但是此时需要强制类型符参与

在继承关系中,由子类向上转型为父类是自动转换的,反过来就必须使用强制类型转换才行

    //父类的引用,实例化父类

    Employee e = new Employee("张三", "丁字胡同二号", 43);

    //子类

    Salary s = new Salary("李四", "东大街118号", 1, 5000.00);

      //父类的引用  实例化子类

    Employee p = new Salary("王二", "胜利大道24号", 47, 250000.00);

 

转型的意义:因为子类是对父类的补充或精进,所以子类相对于父类来说功能会更强大,属性也会更为独特,因此我们定义一个父类类型的引用指向一个子类对象的话,既可以使用子类的功能,也能继续使用父类的共性。

instanceof关键字

由于Java的多态性导致引用变量的声明类型和实际引用对象的类型可能会导致不一致,所以在转换的时候会先用instanceof运算符判断对象的真正类型,然后再运行;

      引用  instanceof  类名;

 

动态绑定

在面向对象程序开发中,我们将一个方法调用与该方法所在的类关联起来,称为"绑定"。绑定分静态绑定和动态绑定,或者称为前期绑定和后期绑定。

静态绑定:是指在程序执行前方法已经被绑定,此时由编译器或其它连接程序实现。针对Java简单的可以理解为程序编译期的绑定;

注意:Java中的方法只有final、static、private和构造器是前期绑定。

动态绑定:是指在运行时根据具体对象的类型进行绑定。Java中所有的普通方法,都采用动态绑定技术。通过动态绑定,JVM必须沿着继承层次树向下找,判断一个方法是否被重写。如果方法被重写了,在运行时就执行子类中的方法,而不是编译时调用的父类方法。

例如,当VirtualDemo程序中的该语句执行时,JVM沿着继承树层次向下找,发现Salary类中重写了Employee类的mailCheck()方法,于是JVM就调用Salary类的mailCheck(),结果就是动态绑定。

 

 多态的应用

多态参数

当方法的某个形式参数是一个引用的时候,与引用兼容的任何对象都是可以传递给该方法的,从而允许方法接受不同数据类型的形参

    public void  payEmployee( Employee e );

解释:通过传递Employee 类型的引用作为形参,方法payEmployee(  )更通用

异构集合

创建一个不同类型但是有共同父类的数据集合

 

抽象

不能被实例化的类称为抽象类,其余与普通类一样,成员变量、方法、构造器等都是一样的

Java中用关键字abstract声明抽象类,可以放在class前面的任何地方

只有方法签名,没有方法实体的方法称为抽象方法,该方法的实现由子类决定

如果一个类中需要使用抽象方法有两个要求:

  1. 包含抽象方法的类也必须是抽象类
  2. 所有子类都必须抽象抽象方法,除非子类也是抽象类

使用抽象类和抽象方法的好处:

 

标签:Java,子类,编程设计,绑定,多态,父类,方法
来源: https://www.cnblogs.com/lloney0/p/11023861.html