抽象类和接口有很多相似的特性,都是将方法或属性抽象出来,再由派生类详细实现。
用法上接口用于规范,抽象类用于共性,详见——
https://www.cnblogs.com/sunzhenyong/p/3814910.html
实例:
//抽象类
//有抽象方法的一定是抽象类
//抽象类中可以包含普通方法
public abstract class Fruit
{
protected string _chandi;
//抽象方法(必须公有)
public abstract int price();
//抽象属性(必须公有)
public abstract string chandi { get; set; }
//普通方法
public string desc() { return "水果类"; }
}
//继承抽象类,必须实现接口类的所有抽象方法
public class Apple:Fruit
{
//重写抽象方法
public override int price()
{
return 10;
}
public override string chandi
{
get
{
return _chandi;
}
set
{
_chandi = value;
}
}
}
//抽象类可继承抽象类并不需要实现父类的方法
public abstract class Orange : Fruit
{
public abstract int pinzhong();
}
//==============================================
//接口
//不能有构造函数
public interface Animal
{
void age();
//接口中可以定义属性
string name { get; set; }
}
//必须实现接口的所有属性和方法
//通过接口可以实现多重继承
public class Dog:Animal
{
string _name;
public void age()
{
Console.WriteLine("age is 1");
}
public string name { get {return _name; } set {_name = value; } }
}
//==================================================
class Program
{
static void Main(string[] args)
{
Apple a = new Apple();
a.chandi = "山东";
Console.WriteLine(a.chandi); //山东
Console.WriteLine(a.desc()); //水果类
Dog an = new Dog();
an.name = "dog";
an.age(); //age is 1
Console.WriteLine(an.name); //dog
Console.ReadKey();
}
}