社区
C#
帖子详情
概念不清,知道的进来
zhangwenqian
2010-03-16 04:47:40
抽象类的抽象方法 必须在子类里面实现吗?
...全文
106
16
打赏
收藏
概念不清,知道的进来
抽象类的抽象方法 必须在子类里面实现吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
a213326364
2010-03-16
打赏
举报
回复
没分了,占个位置
calltaotao
2010-03-16
打赏
举报
回复
抽象方法仅存在于抽象类中,而抽象类与接口有许多相似之处,但类与接口有本质的区别.
如果你刚刚接触oop的话,可以简单地将类理解为"是什么",而将接口理解为"能做什么".
google "抽象类 接口"你会了解到更多...
我对抽象类的理解是将它作为基类来使用.
[Code=C#]
/// <summary>
/// 四驱车
/// </summary>
public abstract class ForewheelDrive
{
public abstract void SpeedUp();
public abstract void Break();
}
/// <summary>
/// 跑车
/// </summary>
public abstract class Roadster:ForewheelDrive
{
public abstract void IntelligenceShift();
}
/// <summary>
/// 兰博基尼
/// </summary>
public class Lamborghini:Roadster
{
public override void SpeedUp()
{
// 实现加速
}
public override void Break()
{
// 实现减速
}
public override void IntelligenceShift()
{
// 实现只能变速
}
}
[/Code]
烈火蜓蜻
2010-03-16
打赏
举报
回复
[Quote=引用楼主 zhangwenqian 的回复:]
抽象类的抽象方法 必须在子类里面实现吗?
[/Quote]
不是必须的,
如果你的子类没有实现,那么你的子类也是抽象的
wangxianshou
2010-03-16
打赏
举报
回复
我是来学习的,谢谢
calltaotao
2010-03-16
打赏
举报
回复
[Quote=引用 10 楼 zhangwenqian 的回复:]
抽象类的抽象方法可以无限传递下去吗?假设这个抽象类的子孙都是抽象类?
[/Quote]
抽象是不能实例化的.所有子孙都是抽象类,那就等于永远不实现...这样有意义吗?
yzxdc
2010-03-16
打赏
举报
回复
所谓抽象方法就是只有定义没有实现的方法,而对于子类来说,它继承了所有祖先类的所有public和protected方法,由于所有想要实例化的类来说,不允许只有定义没有实现的方法存在,所以包含有未实现方法的类只能是抽象类,换而言之非抽象类必须实现所有祖先的抽象方法
zhangwenqian
2010-03-16
打赏
举报
回复
抽象类的抽象方法可以无限传递下去吗?假设这个抽象类的子孙都是抽象类?
calltaotao
2010-03-16
打赏
举报
回复
[Quote=引用 3 楼 zhangwenqian 的回复:]
一个类定义为抽象类,那么这个类中必须包含抽象方法吗?
楼下继续...
[/Quote]
可以包含也可以不包含,但子类如果不是抽象类,就必须实现先祖类的抽象方法
xupeihuagudulei
2010-03-16
打赏
举报
回复
路过帮顶
缭绕飘渺
2010-03-16
打赏
举报
回复
C#的抽象类和抽象方法
//抽象方法:只包含方法定义,但没有具体实现的方法,需要其子类或者子类的子类来具体实现。
//静态方法不能标记为 override、virtual 或 abstract,即静态方法都必须是具体的
/抽象类:含有一个或多个抽象方法的类称为抽象类,在声明时,类名前须添加"abstract"关键字
//抽象类中可以包含非抽象方法
//抽象类不能够被实例化,这是因为它包含了没有具体实现的方法,即可实例化的类一定不是抽象类,不包含未具体实现的抽象方法。
//子类继承抽象父类后,可以使用override关键字覆盖父类中的抽象方法,并做具体的实现。也可以不实现抽象方法,留给后代实现,这时子类仍旧是一个抽象类,必须声明为abstract
//继承的抽象方法不可以被隐藏
//隐藏:在子类中创建与父类中的方法具有相同签名(相同的方法名,相同的参数列表--参数类型和次序)的方法(可以带有"virtual"或"override"关键字)即可实现,但建议使用"new"关键字,以明确地隐藏。
//只能使用"override"关键字来覆盖(override)父类中标记为"virtual"、"abstract"或"override"的方法,而子类中标记为override的方法,也必须是父类中标记为"virtual"、"abstract"或"override"的方法。
//覆盖(override):必须使用override关键字,可以被覆盖的方法包括标记为abstract,virtual,和override的方法;
//隐藏:使用new关键字,也可不使用关键字,可以被隐藏的方法包括一般方法,和标记为virtual"或"override"的方法;
//重载(overload):不需要任何特殊的关键字
//静态方法可以被隐藏或重载
zhangwenqian
2010-03-16
打赏
举报
回复
[Quote=引用 5 楼 leafold 的回复:]
不一定。如果你的子类不是抽象类,就必须实现。
[/Quote]
我一开始也这么想....
到底是什么情况?
leafold
2010-03-16
打赏
举报
回复
不一定。如果你的子类不是抽象类,就必须实现。
zhangwenqian
2010-03-16
打赏
举报
回复
一个类定义为抽象类,那么这个类中必须包含抽象方法吗?
楼下继续...
Snowdust
2010-03-16
打赏
举报
回复
Yes
rwdong2199
2010-03-16
打赏
举报
回复
回复内容太短了
calltaotao
2010-03-16
打赏
举报
回复
是的...
SpringBoot-DDD领域驱动设计的
概念
大家都
知道
软件开发不是一蹴而就的事情,我们不可能在不了解产品(或行业领域)的前提下进行软件开发,在开发前通常需要进行大量的业务知识梳理,然后才能到软件设计的层面,最后才是开发。而在业务知识梳理的过程中,...
Active Directory的基本
概念
前言 本文是面对准备加入Active Directory编程的初学...这篇文章本来是不想写下来的,因为
概念
性内容的编写需要查阅很多的资料,也怕自己讲的不够明白亦或者存在局限性,但是在我入门的时候这方面的资料网上比较分...
安全漏洞
概念
及分类
本文是一个安全漏洞相关的科普,介绍安全漏洞的
概念
认识,漏洞在几个维度上的分类及实例展示。 安全漏洞及相关的
概念
本节介绍什么是安全漏洞及相关的概况。 安全漏洞的定义 我们经常听到漏洞这个
概念
,可...
概念
数据模型(CDM)、逻辑数据模型(LDM)、物理数据模型(PDM)区别以及哪些适合需求分析阶段的数据建模
虽说由于这三个模型在软件开发的过程中,由于其功能与作用的差异,结合项目规模等实际情况,不一定会全部使用以节省项目时间(有时候直接设计物理模型),但我认为不应该被冠以“大家对这个
概念
的理解不同”不同之名...
数据库
概念
及库表操作
数据库
概念
数据库是用户存放数据、访问数据、操作数据的存储仓库,用户的各种数据被有组织的存放在数据库中。可以随时被有权限的用户查询、统计、添加、删除、和修改。 是长期存储在计算机内的,有组织、可共享的...
C#
110,536
社区成员
642,578
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章