C#编程之基类和派生类
白羽 2018-07-10 来源 :网络 阅读 1362 评论 0

摘要:本文将带你了解C#编程之基类和派生类,希望本文对大家学C#/.Net有所帮助。


C#基类和派生类 
1.基类和派生类的一些基本概念 
class B : A{} 
A是基类,B是派生类. 
一个类最多只允许从一个类中派生. 
class C : B{} 
B还可以充当C的派生类 
继承总是隐式为public的,System.Object是所有类的根 
编译器会把你的类悄悄的编译成 class A : System.Object{} 
2.调用基类的构造函数         
class B : A 

public B(string sqlstr) : base(sqlstr) 
{} 

3基类派生类对象之间的关系 
class A{} 
class B : A {} 
class C: A {} 
B b = new B(); 
C c = b;  //这样写是错误地,因为类型不同 
A a = b; //这样写是正确的,但是一定要注意: 
这样做有一个明显的限制 a 对象只能访问基类中的成员不能访问派生类中的成员 
这就是为什么C#完全面向对象的原因,因为C#中所有的东西都继承自System.Object,任何东西都能赋给一个object变量 
4.方法的隐藏 
如果一个基类有n个方法和n个派生类,这n个派生类里又分别有n个方法.你想过会出现什么问题吗?对!就是会遇到 完全一样签名的方法(方法名\参数的数量\类型完全一样) 如果出现这样的情况,在编译过程中将收到一个警告,不要惊慌,仅仅是警告而已,不会影响编译的过程. 

但是你应该认真的对待这个警告,如果派生类的一个对象将调用基类的一个方法,然而这个方法又在这个派生类里有相同签名的方法!那编译器该怎么办? 
我可以负责任的告诉你(呵呵): 
对象调用的是派生类里的方法, 
这种现象在微软官方叫 方法的隐藏,

如果你不想看到那个警告,可以在派生类中与基类同签名的方法前面加个new关键字,告诉编译器:我会为我造成的结果负责,不要警告我!注意这个关键字只是起个屏蔽警告的作用,你明白我的意思吗?(派生类的对象照样还是不能调用基类中同签名的方法,呵呵,还是再补一句吧,) 
5.方法的覆盖 
先看个例子: 

class nvren 
...{ 
public virtual string leixing() 
...{return "这是个女人";} 

class meinv : nvren 
...{ 
public override string leixing() 
...{return "这是个美女";} 

class weizhi : nvren 
...{ 
...............//这里并没有任何覆盖原方法的方法 

nvren a = new nvren(); 
meinv b = new meinv(); 
weizhi c = new weizhi(); 
Console.WriteLine(a.leixing()); 
Console.WriteLine(b.leixing()); 
Console.WriteLine(c.leixing()); 

程序很简单(原谅我用了中文拼音,我知道你看了很多国外的程序,肯定腻了) 
当调用第三个WriteLine时,程序输出了"这是个女人",现在不用我解释你也该明白了. 
这种同一个语句调用不同方法的现象称为多态性(面向对象的一大特性啊!) 
使用virtul和override一定要注意: 
(1)两个方法必签名相同! 
(2)两个方法均不能是private方法,且必须有相同的可访问性! 
(3)不要试图override没有virtual的方法! 
(4)不要试图不用override就覆盖基类的virtual方法(那就成了方法的隐藏了)! 

在给你个小窍门: 
一个override方法将隐式的成为virtual方法,他本身可在未来的一个派生类里被覆盖(点到为止,不要让我写例子给你)

这篇小文到次也该结束了,但我还想再提两句 
1.派生类可以访问一个基类的protected成员 
2.建议保持字段为private. ( 因为面向对象强调封装,而public破坏了封装性,private也会在某些时候破坏封装性,你应该知道是哪些时候.呵呵) 


以上就介绍了C#.NET的相关知识,希望对C#.NET有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言C#.NET频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程