У меня есть следующие классы:Использует ли в программе C# статическую или динамическую привязку?
class Polygon
{
protected string name;
protected float width, height;
public Polygon(string theName, float theWidth, float theHeight)
{
name = theName;
width = theWidth;
height = theHeight;
}
public virtual float calArea()
{
return 0;
}
}
class Rectangle : Polygon
{
public Rectangle(String name, float width, float height) : base(name,width,height)
{
}
public override float calArea()
{
return width * height;
}
}
Главная FUNCTION1:
static void Main(string[] args)
{
Rectangle rect1 = new Rectangle("Rect1", 3.0f, 4.0f);
float Area = rect1.calArea()
}
Главная function2:
static void Main(string[] args)
{
Polygon poly = new Rectangle("Rect1", 3.0f, 4.0f);
float Area = poly.calArea()
}
Я понимаю, что Основная функция 2 использует динамическое связывание.
Если я изменил ключевое слово переопределения на новый в методе calArea класса Rectangle, то это статическая привязка. Как насчет основной функции 1? Использует ли он статическое/динамическое связывание?
Ваш ответ конфликтует с @SergeyS. Я не знаю, кто прав. Какие-либо источники для вашего ответа? – SeeknInspYre