Java中的多态性– OOPS概念
时间:2020-01-09 10:34:45 来源:igfitidea点击:
这篇文章讨论了OOPS概念多态之一和Java中多态的用法。
什么是多态
与继承,抽象和封装一样,多态是面向对象编程的四个基本原理之一。
多态性是希腊语单词,其中poly表示"许多",而morph表示"从一种形式变为另一种形式"。用面向对象的术语,它涉及采用多种形式的同一对象引用。
Java中的多态性概念被设计为具有方法的接口,并且派生类根据其要求实现该接口。然后,使用该单个接口的引用,可以调用那些已实现的类方法中的任何一个。因此,一个接口引用在这里可以根据所引用的类采用多种形式。
Java中的多态性
Java中有两种类型的多态性
- 编译时多态-也称为静态多态。 Java中的静态多态性是通过方法重载实现的,因为它在编译时本身就知道将调用哪个重载方法。
- 运行时多态-也称为动态多态。 Java中的动态多态性是通过方法重写实现的。在方法重写中,在运行时解决将调用哪个重写方法。
Java中的运行时多态示例
在该示例中,存在一个接口doing与方法doPayment(double amount)。该接口由两个类实现。
public interface Payment { void doPayment(double amount); }
实施-1级
public class CashPayment implements Payment { @Override public void doPayment(double amount) { System.out.println("Cash payment of amount- " + amount); } }
实施班-2
public class CCPayment implements Payment { @Override public void doPayment(double amount) { System.out.println("Swipe credit card for amount- " + amount); } }
public class MainClass { public static void main(String[] args) { // Reference of CashPayment instance Payment payment = new CashPayment(); payment.doPayment(106.78); // Now holding reference of CCPayment instance payment = new CCPayment(); payment.doPayment(77.67); } }
输出:
Cash payment of amount- 106.78 Swipe credit card for amount- 77.67
如我们所见,在运行时,Payment的引用可以引用这些实现中的任何一种,并基于当前引用来调用class的方法。
Java中的编译时多态示例
public class MainClass { public static void main(String[] args) { MainClass obj = new MainClass(); System.out.println("Addition Result- " + obj.add(7, 8)); System.out.println("Addition Result- " + obj.add(123.56, 34.78)); } public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } }
在该类中,有两个名称相同(添加)的方法,但是参数的类型不同,因此它们是重载方法。根据在方法调用中传递的参数类型,将调用适当的add方法。此绑定是在编译时本身完成的。
输出:
Addition Result- 15 Addition Result- 158.34