Java中的多态性与示例

先决条件:Java中的方法覆盖

众所周知,
在Java中,我们有继承的概念,父类的功能可以继承/扩展到子类,使用我们可以理解的概念,Java中的方法重写是什么?我们已经在本文中看到了方法重写的示例:带Example的Java继承。我们讨论了带有私有数据成员的方法不能被覆盖,我们再次回到同一示例,并讨论超级关键字的用法。

考虑一下程序:

import java.util.Scanner;
class Headquarters
{
	int totalemployees; //数据成员1-
	String cityname; //数据成员2-
	Scanner KB=new Scanner(System.in);
	void getDetails()
	{
		System.out.println("Enter City Where Headquarters is Sitiuated :");
		cityname=KB.nextLine();
		System.out.println("Enter Total Number of Employees in Headquarters");
		totalemployees=KB.nextInt();
	}
	void showDetails()
	{
		System.out.println("Company Headquarters is Sitiuated in "+cityname+" and has "+totalemployees+" Employees");
	}
}

class Mainbranch extends Headquarters
{	
	int totalMBemployees;
	String citynameMB;
	
	void getDetails()
	{  
		System.out.println("Headquarters:");
		super.getDetails();
		System.out.println("Main Branch:");
		System.out.println("Enter City Where Main Branch is Sitiuated");
		KB.nextLine();//要了解为什么我们使用此声明,请访问我的第一篇文章LINK-
		citynameMB=KB.nextLine();
		System.out.println("Enter The Total Number of Employees In Main Branch");
		totalMBemployees=KB.nextInt();
	}
	
	void showDetails()
	{	
		System.out.println("Headquarters:");
		super.showDetails();
		System.out.println("Main Branch:");
		System.out.println("Company Main Branch is Sitiuated in "+citynameMB+" and has "+totalMBemployees+" Employees");
	}
}

class Company
{
	public static void main(String args[])
	{
			
		Mainbranch M=new Mainbranch();//方法。
		M.getDetails(); //调用此方法时,首先将调用getDetails()Headquarters的方法,然后进入Mainbranch类。
		M.showDetails();//类似地,首先,此方法将显示“总部”类的详细信息,然后将其前进到“ Mainbranch”类。
	}
}

输出结果

Headquarters:
Enter City Where Headquarters is Sitiuated :
Delhi
Enter Total Number of Employees in Headquarters
1500
Main Branch:
Enter City Where Main Branch is Sitiuated
Indore
Enter The Total Number of Employees In Main Branch
500
Headquarters:
Company Headquarters is Sitiuated in Delhi and has 1500 Employees
Main Branch:
Company Main Branch is Sitiuated in Indore and has 500 Employees

注意:在上面的程序中,我们使用两个引用变量来调用相同的方法名称:SuperM,但是不能将这种类型的程序视为遵循多态性。

通常将多态性称为带有“基类参考”的访问子类方法,我们将在下一篇文章中讨论这种类型的多态性,这种类型的多态性称为运行时多态性,它是通过称为“运行时多态性”的编程机制来实现的动态方法调度(DMD)

在深入研究Dynamic Method Dispatch之前,请通过以下链接阅读Java编程中abstract关键字的用法:带示例的Java抽象类。