您的位置:首页 > 编程语言 > C#

abstract 关键字---抽象类

2014-03-23 10:55 176 查看
abstract 修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用abstract修饰符以指示某个类只能是其他类的对象,这个基类被称为抽象类。抽象类本身无法产生实例对象,而且抽象类包含了一个以上的抽象方法,这些方法只是提供函数名称,并没有定义如何实现,由继承的派生类同时必须实现所有抽象类的方法,否则其本身将成为另外一个抽象类。当派生类重写抽象类的方法时,要使用override关键字来重写抽象类所定义的方法。抽象类与非抽象类在以下方面是不同。

1.抽象类不能直接实例化,并且对抽象类使用new运算符是编译时错误,虽然一些变量和值在编译时的类型可以是抽象的。但这样的变量必须或者为Null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。

2.允许(但不要求)抽象类包含抽象成员

3.抽象类不能被密封。

4.抽象类可以包含抽象方法和访问器。

5.一个派生于抽象类的非抽象类必须包含所有的继承抽象方法和访问器的实现。

using System;
namespace CH
{
public abstract class Person
{
private string name;
private int age;
public string Name
{
get{return name;}
set{name=value;}
}
public int Age
{
get{return age;}
set{age=value;}
}
public abstract void ShowInfo(); //抽象方法
}

public class Student:Person
{
public override void ShowInfo() //重写抽象类中的抽象方法
{
Console.Writeline("name:{0}\t age:{1}",Name,Age);
}
}
class Programe
{
static void Main(string[] args)
{
Student student=new Student(); //实例化抽象类
Person person=student; //使用派生类对象实例化抽象类
person.Name="jack"; //使用抽象类对象访问抽象类中的name属性
person.Age=20;
person.ShowInfo();
}
}
}

抽象方法主要有以下特征:

一个抽象方法可以看作是一个虚函数。

抽象方法的声明只能在抽象类中。

抽象方法声明只提供一个实现的方式,没有方法体。

方法体的实现被重写方法提供,重写方法是一个非抽象类的成员。

抽象属性的行为和抽象方法相似,除了不同的声明形式。

在一个静态属性中使用abstract是错误的。

一个抽象属性能够通过派生类使用override实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C#抽象类