c#基类,派生类,抽象类,密封类和继承,重写,重载

基类,派生类,抽象类,密封类
虚函数
继承,重写,重载
base,sealed

基类:(或者父类)就是最初的一个类,算是万物始祖(鉴于本人还是一个初学者,所以说得不太好,见谅~)。
派生类:基类的子孙类。继承基类的所有属性和方法。但是不能使用基类的private的属性和方法。如果要初始化一些基类的属性需要显式调用基类相应的构造函数。下面以“蛋糕”为基类做一点说明:
基类:蛋糕;
派生类:巧克力蛋糕,冰淇淋蛋糕;
而巧克力蛋糕和冰淇淋蛋糕都是蛋糕的一种。也就是说两种蛋糕都是以最基础的“蛋糕”派生出来的,只是添加了一些自己的东西。

例子:
class Cake{
 private int eggs;//鸡蛋的个数,这个变量提供了一个公有属性给派生类使用
 protected int butter;//奶油的重量,这个可以直接在派生类中使用
 //构造函数,开始做蛋糕的准备
 public Cake(){
  //构造函数,初始化
  //每个蛋糕都先打一个蛋
  //随便给一些奶油
  eggs=1;
  butter=2;
 }
 //有参数的构造函数
 public Cake(int eggs){
  eggs=eggs;
 }
 
 //这里为私有变量eggs提供一个public属性,
 //可以提供给派生类操作基类的私有变量
 public int Eggs{
  get{
   return eggs;
  } 
  set{
   eggs=value;
  }
 }
 //虚函数加料
 public virtual void addsome(){
  Console.WriteLine("添加水啦");
 }
 //普通函数
 public void addeggs(){
  eggs++;
  Console.WriteLine("添加一个鸡蛋");
 }
 //析构函数,做好蛋糕了,被吃了
 ~Cake(){
 } 
}

class ChocolateCake:Cake //继承基类的Cake
{
 private int chocolate;//添加自己的一点东西,就是巧克力
 //派生类的构造函数
 public ChocolateCake(int c)
 {
  //准备材料
  Eggs=1;
  chocolate=c;//加巧克力
 }
 //有参数的构造函数
 public ChocolateCake(int c,int eggs):base(eggs){//调用基类的构造函数
  chocolate=c;
 }
 //重写基类函数
 public override void addsome(){  
  base.addsome();//使用base调用基类的被重写或覆盖的函数,先添加一些水
  Console.writeLine("再加多些巧克力");
 }
 //重写普通函数
 public new void addeggs(){
  Eggs+=3;
  Console.WriteLine("添加三个鸡蛋");
 }
}
抽象类:如果在上面的Cake类前添加一个关键字:abstract并省去类里的属性和方法的实现,就是一个抽象类。
抽象类就是先抽取出特征,然后给其他具有这些特征的类去实现自己需要的属性或者方法。
抽象类的属性和方法都没有自己的实现,所以不能实例化。
(同样可以声明一个抽象函数,在派生类中一定要重写该函数,不然编译会出错!)
密封类:当不想某个类被继承(重写)时,可以在类前加上sealed关键字。同样,也可以在函数前加sealed,表示该函数不希望再被重写。
基类,可以当作最初的类,就像是祖先一样。然后由这个祖先类再派生出很多子孙类,这些类就是派生类。基类和派生类是相对而言的。
虚函数(就像是Java的接口中的方法,只是虚函数有自己的实现,而java的接口没有自己的实现),用virtual关键字修饰。虚函数提供了让派生类有自己实现的机会。
虚函数可以被重写(重写时用override修饰),但是普通函数不可以被重写,只能采用覆盖的方式(在派生类的函数前面用new关键字)。
抽象类(就像是Java的接口),用abstract修饰,不能被实例化。
而为了使用重写或被覆盖的函数,就要使用base关键字了,base关键字(就像Java的super)指的就是基类。
有了继承,同样也有不被继承(其实就是不给继承的机会),所以就用sealed关键字修饰(就像Java中的final关键字)。

有一句成语,触类旁通,程序语言就是这样子的,所以,可以使用自己比较熟悉的语言来作为另一种语言的助记符。。。比如在这里,就是用Java来作为C#的助记符

» 本文链接地址:https://www.xidige.com/51

打开支付宝扫一扫,即可进行扫码打赏哦

扫码支持
扫码打赏,你说多少就多少

标签:

分享到:

扫一扫 在手机阅读、分享本文

上一篇: 下一篇:
评论区0人评论125人参与

电子邮件地址不会被公开。 必填项已用*标注

*

loading

赞助商广告