参考文章:https://blog.csdn.net/lizhenxiqnmlgb/article/details/82346478
/// <summary>
/// 抽象类详解:https://blog.csdn.net/lizhenxiqnmlgb/article/details/82346478
/// 抽象类中的抽象方法、抽象属性都要在派生类中override
/// 不能有抽象字段、不能实例化、带有abstract的都必须是公共的、抽象类中抽象成员必须在派生类中实现(如果派生类是抽象类则不用实现)
/// 应用场景:如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧(简单理解:如果这个类目的就是让别人继承的,并且他有一些需要的公共属性或方法,那么就可以设置为抽象类)
/// </summary>
public abstract class Fruit
{
/// <summary>
/// 生产商
/// </summary>
public string Vendor;
public abstract double Price { get; }
public abstract void get();//抽象方法不能有方法体,需要在派生类中实现
}
///接口1
public interface ihaha
{
int get2();
}
///接口2
public interface ihaha22 : ihaha
{
int get3();
}
/// <summary>
/// 抽象类只能继承一个,而接口可以继承多个
/// </summary>
public class Apple : Fruit, ihaha, ihaha22
{
public override double Price
{
get
{
if (Vendor == "红富士")
{
return 100;
}
else
{
return 10;
}
}
}
public override void get()
{
Console.Write("我在北方和南方都可以生长,我的生产商是:" + Vendor + "我的价格是" + Price);
}
public int get2()
{
throw new NotImplementedException();
}
public int get3()
{
throw new NotImplementedException();
}
}
调用:
Fruit fruit = new Apple();
fruit.Vendor = "红富士";
fruit.get();