抽象方法只能位于什么类中?

来源:百度知道 编辑:UC知道 时间:2024/05/17 06:50:02
抽象方法只能位于什么类中?

是 抽象类 还 派生类 类?或是其他的?

由于抽象类本身表达的是抽象的概念,因此类中的许多方法并不一定要有具体的实现,而只是留出一个接口来作为派生类重载的界面。举一个简单的例子,“图形”这个类是抽象的,它的成员方法“计算图形面积”也就没有实际的意义。面积只对“图形”的派生类比如“圆”、“三角形”这些非抽象的概念才有效,那么我们就可以把基类“图形”的成员方法“计算面积”声明为抽象的,具体的实现交给派生类通过重载来实现。

一个方法声明中如果加上abstract修饰符,我们称该方法为抽象方法(abstract method)。

如果一个方法被声明也是抽象的,那么该方法默认也是一个虚方法。事实上,抽象方法是一个新的虚方法,它不提供具体的方法实现代码。我们知道,非虚的派生类要求通过重载为继承的虚方法提供自己的实现,而抽象方法则不包含具体的实现内容,所以方法声明的执行体中只有一个分号“;”。

只能在抽象类中声明抽象方法。对抽象方法,不能再使用static或virtual修饰符,而且方法不能有任何可执行代码,哪怕只是一对大括号中间加一个分号“{;}”都不允许出现,只需要给出方法的原型就可以了。\

“交通工具”的“鸣笛”这个方法实际上是没有什么意义的,接下来我们利用抽象方法的概念继续改写汽车类的例子:

程序清单14-6:

using System;
abstruct class Vehicle //定义汽车类
{
public int wheels; //公有成员:轮子个数
protected float weight; //保护成员:重量
public Vehicle(int w,float g){
wheels=w;
weight=g;
}
public abstract void Speak();
};

class Car:Vehicle //定义轿车类
{
int passenger; //私有成员:乘客数
public Car(int w,float g,int p):base(w,