C#总结2
第三章
对于继承:继承是根据父类创建新子类的过程;
对于继承:例:
Public class Father
{
public void say()
{
//dosomething
}
}
Public class Son:Father
{
Public void say()
{
//dosomething
}
}
这这里Son就隐藏了Father的say方法,也就是覆盖了;
但C#里希望这样写
Public class Son:Father
{
Public new void say()//多加一个new
{
//dosomething
}
}
这里讲讲base关键字,上一章讲this的时候提过:
Base是对父类的声明:
在编译器里,”base.”后面就出现了父类里的属性和方法,而
“this.”就出现了本类里额属性和方法;就是这个区别;
对于对象的生命周期,课本上的那个例子挺好的:
例:
Public class Grandsire
{
Public Grandsire()
{
Consoler.WriteLine(“ 调用Grandsire构造”);
}
~Grandsire()
{
Consoler.WriteLine(“ 调用Grandsire析构”);
}
}
Public class Father:Grandsire
{
Public Father()
{
Consoler.WriteLine(“ 调用Father构造”);
}
~Father()
{
Consoler.WriteLine(“ 调用Father析构”);
}
}
Main()
{
Father f=new Father();
}
输出:
调用Grandsire构造
调用Father构造
调用Father析构
调用Grandsire析构
对于这样的结果,我就不多说什么了,看疗效吧
虚拟方法和重载方法:
这个考试中记住,在继承父类虚拟函数是要用关键字override来重载
例:
Class Father
{
Public virtual void say()
{
//dothing
}
}
Class Father
{
Public override void say()
{
//dothing
}
}
抽象类:
对于抽象类的定义:
Abstract class
记住几个要点:
抽象类里面不一定都是抽象方法;
在抽象类里定义抽象方法的时候,在子类继承这个抽象父类时,如果子类也是不是抽象类,必须为父类的抽象方法提供具体实现方法,要么是override abstract修饰;
例:
Public abstract class Father
{
Abstract void say();
Abstract void do();
}
Class Son :Father
{
Public override say()
{
//dothing
}
Public override abstract void do();
}
抽象类和借口一样不能被实例化
密封类,关键字 sealed
Sealed calss
就是不让继承的类
如果给方法定义sealed 方法不允许重载;
随机推荐
- 【暑假】[实用数据结构] AC自动机
Aho-Corasick自动机 算法: <功能> AC自动机用于解决文本一个而模板有多个的问题. AC自动机可以成功将多模板匹配,匹配意味着算法可以找到每一个模板在文本中出现的位置. & ...
- 卡特兰数 BZOJ3907 网格 NOIP2003 栈
卡特兰数 卡特兰数2 卡特兰数:主要是求排列组合问题 1:括号化矩阵连乘,问多少种方案 2:走方格,不能过对角线,问多少种方案 3:凸边型,划分成三角形 4:1到n的序列进栈,有多少种出栈方案 NOI ...
- SystemParametersInfo
Python的模块pywin32中的win32gui.SystemParametersInfo()函数 在使用win32con.SPI_SETDESKWALLPAPER设置Wallpaper时,其第二 ...
- adb 启动失败的原因和修改adb端口号
在我们使用Android Studio的时候,有时候就会出现adb打开失败或者启动不了的情况. adb 启动失败的原因:有其他程序占用了adb默认启动的端口号(像我就遇到过,每次只要提前启动了酷狗音乐 ...
- FreeModbus Slave For AVR源代码 精简版2 【worldsing 笔记】
FreeModbus 源码:点击下载 线圈BUG解决(后来发现不一定是BUG) 1.eMBException eMBFuncWriteCoil( UCHAR * pucFrame, USHORT * ...
- Android设计模式系列--模板方法模式
模板方法,和单例模式是我认为GOF的23中最简单的两种模式.但是我个人对模板方法的经典思想特别推崇,虽然模板方法在大对数情况下并不被推荐使用,但是这种通过父类调用子类的方法,使用继承来改变算法的一部分 ...
- 教你50招提升ASP.NET性能(十二):在生产环境,仔细考虑你需要记录哪些日志
(18)When in production, carefully consider what you need to log 招数18: 在生产环境,仔细考虑你需要记录哪些日志 Many peopl ...
- main()函数的输入参数 main(int argc, char** argv)
一般简单的C++程序,main函数的写法都是 int main() {... ; return 0;},但是,如果在运行程序时需要有参数输入,可以是使用将主函数写成int main(int argv, ...
- Android ADB使用之详细篇
Android开发环境中,ADB是我们进行Android开发经常要用的调试工具,它的使用当然是我们Android开发者必须要掌握的. ADB概述 Android Debug Bridge,Androi ...
- kvm上安装xp
主要为了看看图像显示是否有问题,跑起来系能如何,网络连接.文件共享是怎样的. 用的是雨林木风xp sp3的iso.为了提高性能,决定使用qcow2格式,预分配metadata,cache=none(查 ...