如何使用抽象类?
请举个例子 问题点数:100、回复次数:3Top
1 楼yarshray(saga jion(心飘情落))回复于 2002-10-01 12:31:01 得分 0
http://216.239.33.100/search?q=cache:bUshKfWxKNEC:www.vchelp.net/itbookreview/view_paper.asp%3Fpaper_id%3D340+%E6%8A%BD%E8%B1%A1%E7%B1%BB+C%23&hl=zh-CN&ie=UTF-8Top
2 楼yarshray(saga jion(心飘情落))回复于 2002-10-01 12:31:32 得分 0
正文
C#的抽象类和密封类
为了庆祝VCHELP的VC#/dotNet Help栏目开张,雷神特意写个小文章表示一下。
有时候我们需要表达一种抽象的东西,它是一些东西的概括,但我们又不能真正的看到它成为一个实体在我们眼前出现,为此面向对象的编程语言便有了抽象类的概念。C#作为一个面向对象的语言,必然也会引入抽象类这一概念。
下面我们来看看C#的抽象类
雷神又要举例子了。为什么我习惯举例子,可能是为了弥补语言表达能力的不强吧,希望大家不要被雷神的例子误导,大家一定要知道,不识庐山真面目,只缘身在此山中的道理,要站在画外看画,站在例子外来理解例子。
抽象类是老板,它的子类是打工的,干活的是打工的,老板只是指导一下,而且老板不会去做具体的工作。看下面的伪代码吧。
using System;
abstract class 资料
{
protected string 名称;
public abstract string 资料名称 //抽象的属性
{
get;set;
}
public abstract void 发表(); //老板指导打工的要干什么 抽象的方法
public abstract void 删除();//老板指导打工的要干什么 抽象的方法
}
class 文章:资料
{
string 作者;//这是一个新的成员数据
//改写抽象的属性
public override string 名称
{
get{retuen 名称;}
set{名称=value;}
}
public string 作者
{
get{return 作者;}
set{作者=value;}
}
//文章这个类具体实现了资料类的抽象方法,借出()和归还()。
public override void 发表()//打工的根据老板的指示确定该干什么
{
Console.WriteLine("文章的名称为:{0}",名称);
Console.WriteLine("文章的作者为:{0}",作者);
}
public override void 删除(){......}//打工的根据老板的指示确定该干什么
}
public static void Main()
{
书 一本书=new 书();//具体的一个打工的
一本书.名称=“C#的抽象类和密封类”;
一本书.作者=“雷神”
一本书.发表();//干了一个具体的工作
}
当然这段代码是不可能编译成功的,但显示结果应该是这样:
文章的名称:C#的抽象类和密封类
文章的作者:雷神
上面的例子很简单,说明了抽象类的概念。我们来整理一下C#的抽象类的一些需要注意的问题:
1、首先抽象类是必须用abstract 修饰符声明。
2、抽象类只能作为基类,不能产生实例。
3、抽象类中可以包含抽象的方法。
4、同样一个类可以包含抽象的属性。
5、如果一个类是从抽象类派生,则它必须通过改写来实现所有继承的抽象方法。
我们还要注意
1、抽象方法只能在抽象类中声明。
2、抽象方法不能使用static和virtual修饰符。(抽象的方法默认是一个virtual方法)
3、抽象方法不能在派生类用base关键字进行访问。
下面我们在说说密封类:
为什么要有密封类呢?如果你不想你的类被其他的程序员或者自己继承,产生派生类。而且这个类已经没有被继承的必要,你想在运行时提高他的效率,那你可以选择密封这个类。方法很简单,只需在声明类时用sealed修饰符就行了。当然一个密封类不可能是抽象类,因为抽象类是用来被继承的。
这便是C#的抽象类和密封类,大家可以看看和C++有什么不同的地方。
正文完
Top
3 楼SHQcloud()回复于 2002-10-01 20:54:58 得分 100
http://shqshk.home.shou.comTop




