C#中的抽象类问题

最近开始学习C#,在看书的过程中遇到一个问题:书上是这样写的:抽象类可以有抽象成员,这些成员在基类中没有执行代码,这些代码必须在派生类中提供。抽象基类可以提供成员的实现代... 最近开始学习C#,在看书的过程中遇到一个问题:
书上是这样写的:
抽象类可以有抽象成员,这些成员在基类中没有执行代码,这些代码必须在派生类中提供。
抽象基类可以提供成员的实现代码。
这两句话应该如何理解呢?方便的话请附上例子,谢谢
展开
 我来答
百度网友fa5c0f7
2011-03-03 · TA获得超过439个赞
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:113万
展开全部
例如
public abstract class Person
{
public abstract void Eat(); //第一句话:抽象类可以有抽象成员(需加abstract关键字),这里只需要声明即可,在派生类里去实现。

public void Sleep() //第二句:抽象类可以有成员的实现代码。这个方法已经实现了 (不需加abstract关键字)。
{
Console.WriteLine("sleep");
}
}

张三类 派生与person

class 张三 :Person
{
public override void Eat() // 实现 基类(Person) 的抽象成员。
{
Console.WriteLine("eat");
}
}

也就是说抽象类里可以有Eat那样的抽象方法(成员),需派生类去实现。也可以有像Sleep那样的已经实现了的方法(成员)。

接口与抽象类有类似的地方,建议也一起看看。接口的话 里面只能是定义的方法,不能实现。由派生类去实现。
百度网友bb47466
2011-03-03 · TA获得超过601个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:294万
展开全部
abstract 修饰符用于表示所修饰的类是不完整的,并且它只能用作基类。抽象类与非抽象类在以下方面是不同的:

抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
允许(但不要求)抽象类包含抽象成员。
抽象类不能被密封。
当从抽象类派生非抽象类时,这些非抽象类必须具体实现所继承的所有抽象成员,从而重写那些抽象成员
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
herohua850731
2011-03-03 · TA获得超过393个赞
知道小有建树答主
回答量:309
采纳率:0%
帮助的人:181万
展开全部
抽象类一般作为基类
比如
abstract class Tool
{
public abstract void OnMouseDown(DrawingCanvas drawingCanvas, MouseButtonEventArgs e);
}

Tool是抽象类,下面有个抽象方法,定义了参数,但是没有写实体,就是方法的内容
这个方法可以被这个抽象类的派生类调用,重写

比如
class ToolObject : Tool
{
public override void OnMouseDown(DrawingCanvas drawingCanvas, MouseButtonEventArgs e)
{
//重写的内容
}
}

因为基类中的这个OnMouseDown方法,要在多给类中用到,所以用了抽象类,避免代码杂乱,冗余
追问
抽象类还可以用来干啥的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式