社区
C#
帖子详情
问几个概念性的问题
peterb
2006-03-19 08:34:54
1.说明继承、重载、覆盖、隐藏和多态的区别。
2.说明C#中多态的条件。
3.说明派生类对象的链式构造和析构过程。
4.什么是密封类和密封方法。
5.Base关键字如何使用。对应与c++是怎么调用基类被隐藏的函数的?
...全文
180
13
打赏
收藏
问几个概念性的问题
1.说明继承、重载、覆盖、隐藏和多态的区别。 2.说明C#中多态的条件。 3.说明派生类对象的链式构造和析构过程。 4.什么是密封类和密封方法。 5.Base关键字如何使用。对应与c++是怎么调用基类被隐藏的函数的?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ice_frank
2006-04-13
打赏
举报
回复
UP
huangguangdou
2006-04-13
打赏
举报
回复
楼上的说的挺好
up
peterb
2006-04-13
打赏
举报
回复
说明继承、重载、覆盖、隐藏和多态的区别。
答:
继承:派生类可以继承除了基类的构造函数和析构函数以外的所有的成员。
重载:函数的参数个数或参数类型不同的而函数名相同的函数称重载。根据参数的不同自动匹配调用。
覆盖/隐藏:
(1)成员变量的覆盖:如果派生类声明了一个和基类同名的成员变量,就是覆盖了基类成员。
(2)成员函数(方法)的覆盖:实际上可以分为两种:普通方法(非虚函数)的覆盖称为隐藏,声明时在派生类中函数头前用关键词new,不能与override同时用;另外一种,就是虚方法的覆盖,真正意义上的函数覆盖。基类中的函数用关键词virtual,派生类中用override。
多态:同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。基类对象指向派生类对象,基类对象调用虚函数时体现多态,会在运行时决定调用哪个类的函数,即运行时多态。
实际上,只有虚函数才有多态,成员变量不具多态的能力,非虚函数的覆盖函数(即所说的隐藏)在编译时就确定其调用者,即编译时多态,但没有多态的体现。
说明C#中多态的条件。
答:
基类引用指向派生类对象,调用virtual函数,根据运行时确定指向的对象决定调用基类的还是派生类里的函数,实现多态。
只有虚函数的覆盖才有多态的能力,成员变量不具有多态的能力。
说明派生类对象的链式构造和析构过程。
答:
实例化一个派生类的对象时,派生类构造函数在执行它自己的函数体之前,会显示或隐式地调用基类构造函数。
当析够一个派生类对象时,顺序与构造函数执行的顺序相反。先析构自己再析构基类;
N个对象的析构与构造的顺序相反。
什么是密封类和密封方法。
答:
密封类:不允许别的类继承的类。类声明的前面加关键字sealed。
密码方法:对方法可以使用sealed修饰符,这是称该方法是一个密封方法。密封方法是以防止在方法所在类的派生类中对改方法的重载。密封方法必须对基类的虚方法进行重载,提供具体的实现方法。
Base关键字如何使用。对应与c++是怎么调用基类被隐藏的函数的?
答:
C#中:
Base一般用在派生类中(或派生类对象)调用基类的函数或成员时为了区分基类和派生类同名的成员(如成员函数的覆盖或是继承来的成员变量的隐藏);一般格式为: Base.fuction() 或者Base.x (其中function()是基类的成员函数,x是基类的成员变量)。
Eg:
Master从Student派生来,fn()是Student中的函数
Master a;
a.base.fn();
C++中:
对应在c++中格式为:father::function()或者father::x.(father是基类)
Eg: a.Student::fn();
abstract类与具体类的区别,abstract类的作用是什么?
答:
与具体类区别在于:
抽象类只能作为其它类的基类,它不能被直接实例化,而且对抽象类不能使用new操作符。
抽象类不能同时又是密封的。
作用:为它的派生类提供一个公共的界面。
interface与abstract类的区别,interface的作用是什么?
答:
区别在于:
接口继承允许多继承,一个接口可以有多个父接口;而抽象类和普通类只能有一个父类。
接口里面的只是对函数的说明不包含任何实现(即使是空的{}都不行;而抽象类可以包含部分方法的实现。
接口一旦创建了就不能更改。
接口成员声明不能包含很和修饰符。默认的为public.
实现接口必须实现接口中的所有方法,而继承抽象类的子类可以还是抽象类,可以只实现部分方法。
作用:在组件和组件之间、组件和客户之间都通过接口进行交互。
peterb
2006-03-20
打赏
举报
回复
好,回去先查查中文sdk再说,不懂再问各位
kqh0319
2006-03-20
打赏
举报
回复
1.说明继承、重载、覆盖、隐藏和多态的区别。
2.说明C#中多态的条件。
3.说明派生类对象的链式构造和析构过程。
4.什么是密封类和密封方法。
5.Base关键字如何使用。对应与c++是怎么调用基类被隐藏的函数的?
MSDN一一有描述和實例,
MonkWang
2006-03-20
打赏
举报
回复
学习
tianzhijian
2006-03-20
打赏
举报
回复
楼上的说得对,还是先自己看书搞清楚得好。
这样会更有帮助。
達魔
2006-03-20
打赏
举报
回复
看你问的几个问题,
我觉得
一:你对C#编程基本不会,
二:你对面向对象编程的思想基本模糊,
三:建议你不要在这发贴,而是找一本书啃啃,因为涉及的内容太多,不可能有谁会在这把东西全写出来的,如果不全写出来,对你还是没有帮助的……
祝你好运,
我想只要你仔细的看书了,这些概念很好懂的……
李洪喜
2006-03-20
打赏
举报
回复
看看C#高级编程的前几章吧。说的比较清楚的。
孟子E章
2006-03-19
打赏
举报
回复
中文sdk上应该都有的。要理解概念,最好作个例子测试
我看你有戏
2006-03-19
打赏
举报
回复
楼上说的我理解了,其他的几点呢,说来听听,
感觉楼上这么一说自己就理解了,书上看了就是糊里糊涂的
peterb
2006-03-19
打赏
举报
回复
谢谢zhantianyou() 的回答,大家继续,能够把这些问题搞搞清楚
平时代码写了不少,但是一些概念性的问题,不是很清楚,理解不够
zhantianyou
2006-03-19
打赏
举报
回复
继承指一个派生类能够调用基类的所有成员,但重载只的是在同一个类中,可以有多个相同的方法名,在调用时,系统会根据调用参数的不同,自动分配对应的方法!但是参数名类型不能相同,否则会出错
最新java ee api中文版帮助文档 chm格式
最新java ee api帮助文档 ,chm格式的。中文版和英文版两版本,网上好不容易找到的
Android 自定义ViewGroup 实战篇 -> 实现FlowLayout源码程序
代码为博客实例代码:http://blog.csdn.net/lmj623565791/article/details/38352503 有
问
题
请博客留言
IIS控制管理
学习.net开发的好例子
SQL操作基础教程
sql入门电子教程 SQL操作基础教程
Tianlesoftware Oracle 学习手册(v1.0)高清完整PDF版
Tianlesoftware Oracle 学习手册(v1.0)
C#
111,097
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章