abstract 关键字---抽象类

本文介绍了抽象类和抽象方法的基本概念,包括它们的特点、使用方法以及如何在派生类中实现抽象方法等内容。文中还提供了具体的代码示例,帮助读者更好地理解抽象类和抽象方法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值