抽象类用来描述现实生活中的期望、计划、规则等等抽象的事物。它是指在规划中但还没有成为现实的事物。
先看实例:
class Program
{
static void Main(string[] args)
{
starBucks one = new starBucks(); //实例化
one.磨咖啡();
one.卖咖啡();
}
}
abstract class dreamcoffeeshop //创建抽象类
{
abstract public void 磨咖啡();
abstract public void 卖咖啡();
}
//抽象类本身不能实例化对象,它唯一的作用就是被子类继承并且实现。
class starBucks : dreamcoffeeshop //继承并实现
{
public override void 卖咖啡()
{
Console.WriteLine("天天起床卖咖啡!");
}
public override void 磨咖啡()
{
Console.WriteLine("磨咖啡呀磨咖啡,我磨磨磨磨磨!");
}
}
语法:
[访问修饰符] abstract class 类名
{
抽象方法(只是抽象的一个描述,没有具体的实现过程); //比如:abstract public void 磨咖啡();
}
注意
1、 抽象类中,可以有字段,但是字段不能为抽象abstract.
2、 如果必须使用抽象来定义变量,可以使用属性。
. abstract class robot
{
public abstract string name { get; set; }
}
3、 抽象类只能被继承,不能直接实例化对象。
4、 抽象类中的抽象方法,必须在子类中全部重写并实现。
5、 抽象类中的抽象成员,不能是私有的,因为他必须被子类继承。
6、 抽象类中允许存在非抽象成员。
7、 子类重新并实现抽象成员的时候,必须用override来覆盖实现。
。 class Program
{
static void Main(string[] args)
{
now one = new now();
one.sayhello();
}
}
abstract class robot
{
public abstract string name { get; set; }
public int age;
public abstract void sayhello();
}
class now : robot
{
public override string name { get; set; }
public override void sayhello()
{
Console.WriteLine("hello");
}
}
8、 包含抽象成员的类必须也是抽象类。
抽象方法
抽象方法就是抽象类之中需要被子类继承并重写的方法
定义语法
[访问修饰符] abstract 返回类型 方法名(传入参数);
或
abstract [访问修饰符] 返回类型 方法名(传入参数);
继承并重写抽象方法的语法
[访问修饰符] override 返回类型 方法名(传入参数)
{
方法体中的代码
}
注意:
1、 抽象类中的抽象方法没有具体的实现过程。
2、 抽象类中的抽象方法不能是私有的。
3、 抽象类中的抽象方法,必须在子类中全部重写并实现。
4、 子类找那个必须用override覆盖实现所有的抽象方法。
5、 不能将静态方法定义为抽象方法。
抽象属性
示例
public abstract string name { get; set; }
语法
[访问修饰符] abstract 返回类型 属性名{get;set;}