抽象类和抽象函数
所谓抽象就是没有具体只有其意。在继承中,如果想要定义一群派生类共有的共性却没有具体实现的“方法”时,可以用抽象类实现了。例如语文老师、数学老师、英语老师等都是老师,老师都有教学的任务。所以教学就是共性。因为教学不确定教学的内容和时间。所以教学的内容、时间都不同都需要针对不同的的派生类来定义。
抽象类和抽象方法的语法如下,加上abstract修饰符即可。抽象方法没有函数体只有函数签名。抽象方法必须在抽象类中,否则会出现错误。
public abstract class teacher //抽象类,加abstract
{
public abstract void Teaching(); //抽象方法Teaching,加abstract
}
一旦继承了一个抽象类,则一定要将其中的所有的抽象方法全部的重写实现。
namespace test
{
public abstract class Teacher //抽象类
{
private int number;
public abstract int Number //抽象属性
{
set;
get;
}
public abstract void Teaching(); //只要一个类中有关抽象函数则一定要在抽象类中
}
class MathTeacher:Teacher
{
public override void Teaching() //重写的抽象方法
{
Console.WriteLine("我是数学老师,我教学数学");
}
public override int Number //重写的抽象属性
{
get { return Number; }
set
{
if (value <= 100)
Number = value;
else
Number = 0;
}
}
}
class Program
{
static void Main(string[] args)
{
MathTeacher myMathTeacher = new MathTeacher();
myMathTeacher.Teaching();
Console.Read();
}
}
}
/*
输出的结果为:
我是数学老师,我教学数学
*/
属性也是一种特殊的方法。所以抽象类、虚方法等都对属性有效。