c# --- 抽象类,密封类与子类的构造函数

本文探讨了C#中抽象类与密封类的区别,包括抽象类的定义、抽象函数的概念,以及如何通过abstract和sealed关键字操作。重点讲解了抽象函数与虚函数的关系,子类继承抽象类的规则,以及密封类的特性——类无法继承和函数不可重写。同时涉及子类构造函数的执行顺序。
摘要由CSDN通过智能技术生成

1.抽象类的定义和密封类的定义没有什么区别,然后c#中允许我们将类和函数通过abstract关键词修饰为抽象类和抽象函数

2.我们不能通过抽象类来实例化对象,抽象类中能够同时包含普通函数和抽象函数

抽象函数其实就是c++中的虚函数,没有函数实现只有函数声明

3.如果子类继承的抽线类中有抽线函数的话,这个抽象函数在子类中必须被重写,不然的话编译器就会报错


密封类

与抽象类和抽象函数相对应的是密封类和密封函数 --- sealed类或函数密封关键字修饰的话,则则该类无法作为父类被继承,且该函数无法被重写(sealed --- v.封上)

1.对于密封类而言,任意一个类一旦被sealed修饰为密封类都将无法作为父类被继承

2.对于密封函数 ---- sealed只能够将重写后的函数修饰为密封类 --- 即sealed想修饰函数的前提是这个函数被override修饰,而一个函数被override修饰的前提是函数是被重写的父类函数,且父类函数被virtual修饰为虚函数

一个虚函数一旦被修饰为密封函数,之后就无法再被任何子类重写了

 注意:!!!虚方法和隐藏方法的实现原理是不同的!!!!

虚方法的底层实现原理是虚方法表,虚方法表中记录了虚方法的引用,当我们重写一个虚方法的时候,就相当于我们在更新虚方法表中的虚方法引用,使原本指向父类函数的方法指向子类中被重写的方法

而隐藏方法的实现原理则是通过将子类中的父类被重写函数隐藏,使得编译器在通过子类调用被重写函数的时候只能够找到重写后的函数


子类的构造函数

 1.c#中的子类构造函数规则和c++中相似,都是先执行继承的父类的构造函数,然后再执行子类的构造函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值