【发布时间】:2020-10-05 21:46:56
【问题描述】:
基类
public class Base
{
public int Price { get; set; }
public string Name { get; set; }
public int Tax()
{
return Price / 2;
}
}
派生类
public class Car : Base
{
public int Power { get; set; }
public string Brand { get; set; }
public Car(string brand, int power, int price, string name)
{
Brand = brand;
Power = power ;
Price = price;
Name = name;
}
购物车类
public class Cart
{
private List<Base> list = new List<Base>();
public int TotalPrice()
{
int sumPrice = 0;
foreach (Base item in list)
{
sumPrice += item.Tax();
}
return sumPrice;
}
public void Add(Base baseClass)
{
list.Add(baseClass);
}
控制器
Cart cart = new Cart();
Car car = new Car("BMW", 10, 100, "John");
cart.Add(car);
return View("Index", cart.TotalPrice().ToString());
我从派生类创建对象并将其添加到购物车中。
汽车 car = new Car("BMW", 10, 100, "John");
但是当我在 Cart 类中列出汽车时,我使用基类。
私有列表
我没有收到任何错误,但我想知道的是,即使基类中没有“品牌”和“权力”属性,我仍然可以将它们添加到基类并列出它们。
public void Add(Base base)
{
list.Add(base);
}
【问题讨论】:
-
只需将基类转换为 car 即可访问属性。
标签: c# asp.net oop polymorphism