先决条件: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
注意:在上面的程序中,我们使用两个引用变量来调用相同的方法名称:Super和M,但是不能将这种类型的程序视为遵循多态性。
通常将多态性称为带有“基类参考”的访问子类方法,我们将在下一篇文章中讨论这种类型的多态性,这种类型的多态性称为运行时多态性,它是通过称为“运行时多态性”的编程机制来实现的动态方法调度(DMD)。
在深入研究Dynamic Method Dispatch之前,请通过以下链接阅读Java编程中abstract关键字的用法:带示例的Java抽象类。