Java中的动态方法调度

时间:2020-02-23 14:34:47  来源:igfitidea点击:

在本教程中,我们将关于动态方法调度,其也称为运行时多态性。

动态方法分发

动态方法调度是一种技术,可以在运行时调用覆盖方法,而不是编译时间。
通过参考调用重写方法,然后调用哪个版本的重写方法根据运行时确定它引用的对象类型。
innamic方法调度由JVM不编译器执行。
动态方法调度允许Java支持覆盖方法并执行运行时多态。
允许子类拥有常见方法,可以重新定义它们的特定实现。
这使得超类参考根据它指向的对象来响应不同的方法。

Base b=new Base();
Derived d=new Derived();
b=new Derived();      //Base class reference refer to derived class object  that is upcasting

当父类参考变量指的是子类对象而不是被称为扫描和使用此技术动态方法调度执行。
我们无法使用派生类引用来引用基类对象。
例如:

package org.arpit.theitroad;
 
class Rectangle
{
	int l=8,b=4;
	int area;
	public void area()
	{
		area=l*b;
		System.out.println("Area of rectangle: "+area);
	}
}
class Square extends Rectangle
{
	public void area()   //overridden method
	{
		area=l*l;
		System.out.println("Area of square: "+area);
	}
}
class Triangle extends Rectangle
{
 
	public void area()     //overridden method
	{
		area=(b*l)/2;
		System.out.println("Area of triangle: "+area);
	}
}
public class Calculation
{
	public static void main(String args[])
	{
		Rectangle r=new Rectangle();
		r.area();
		r=new Square();       //superclass reference referring to subclass Square object so,at run time it will call Square area()
		r.area();
		r=new Triangle();    //superclass reference referring to subclass Triangle object so,at run time it will call triangle area()     
		r.area();
		                     
	}
}