l 抽象类与抽象方法由abstract修饰
l abstract的使用注意
? 抽象方法没有方法体
? 抽象成员只能存在于抽象类中
? 抽象类可以有非抽象成员
? 抽象类的派生类必须实现抽象方法体
? 抽象类只能用作基类,无法实例化
static void Main(string[] args)
{
//抽象方法是用abstract修饰;
//抽象方法没有方法体
//抽象方法必须在抽象类中
//抽象类 无法实例化
//父类是抽象类,子类继承了这个类,必须把抽象类中的抽象方法重写
Pig pig = new Pig();
pig.Shout();
Console.ReadKey();
}
}
public abstract class Animal
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
public abstract void Shout();//抽象方法
public void SayHello()
{
Console.WriteLine("哈哈哈");
}
}
public class Pig :Animal
{
public override void Shout()//重写方法
{
Console.WriteLine("哼哼叫");
}
}
#region 复习的代码
public class Person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
public virtual void Show()//重写方法
{
Console.WriteLine("我是人类");
}
}
public class Teacher : Person
{
public override void Show()//重写方法
{
Console.WriteLine("我是一个老师");
}
}
#endregion
}
虚方法抽象方法比较:
![C多态 - songFeng4985 - 王松峰的博客](http://img3.ph.126.net/P8ItnjtbeRwx7GCOfHJazQ==/6597942778889060433.jpg)