java_318-32027
多态性java编程的四个主要原则之一。在这里,我将更多地讨论多态性是如何成为Java语言最重要的特性之一。让我们从基础开始。多态性被定义为对像以多种形式表示的能力。

多态性原理分为两类,即:

编译时(静态)多态

运行时(动态)多态

 


1.编译时多态性:

方法重载用于实现静态多态性。方法重载表明没有。类中具有相同名称但在顺序,类型或否定方面不同的方法。参数。在编译时,Java通过检查方法的签名来确定必须调用的方法。因此,它被称为编译时多态性

例如:

classCalculate

{

    int add(int a, int b)

    {

         return a+b;

    }

    int  add(int a, int b, int c) 

    {

         return a+b+c;

    }

}

publicclassSample

{

   publicstaticvoid main(String args[])

   {

            Calculate obj = newCalculate();

       System.out.println(obj.add(20, 30));

       System.out.println(obj.add(20, 40, 30));

   }

}

 

输出:

50
90

 

在这里,我们有两个不同版本的相同方法'add'。两种不同版本采用不同的版本。参数。编译器检查要在编译时调用的方法的签名。

2.运行时多态性:

方法重写用于在java中实现动态多态。方法重写定义为在保持相同签名的同时将超类的方法重新定义为子类的过程。使用方法重写,我们可以在超类和子类中定义多个具有相同名称和签名的方法。对象的类型在运行时确定。它是标识要调用的方法的对像类型。因此,它被称为运行时多态性。

例如:

class XYZ{
   publicvoid First(){
         System.out.println("Overridden");
   }
}
publicclass ABC extends XYZ{
 
   publicvoid First(){
         System.out.println("This method is Overridden");
   }
   publicstaticvoid main(String args[]){
         XYZ obj =new ABC();
         obj.First();
   }
}

 

输出:

This method is Overridden

 

这里,将调用子类ABC的方法First(),因为对象的类型决定了要执行的方法。并且由于该对象属于子类,因此调用First()方法的子类版本。

 

动态多态性比静态多态性更灵活,因为在动态多态性的情况下,所有事物都在运行时执行。由于静态多态性在编译时的早期绑定,它比在运行时绑定的动态多态性更快。  

查看原文 >>
相关文章