第三章

对于继承:继承是根据父类创建新子类的过程;

对于继承:例:

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 方法不允许重载;

随机推荐

  1. 在FOR中使用close window,循环次数大于1就会报异常

    在FOR循环中执行以下动作: 场景:1.打开页面A,    2.点击A中的链接打开新的window, 3.将driver切换到新window, 4.close window 5.再切换到页面A 时出异 ...

  2. 交易策略研究 R库

    本文在Creative Commons许可证下发布 交易策略研究 R库,直接安装:xts, TTR,quantmod,RTAQ,PerformanceAnalytics,FactorAnalytics ...

  3. Stm32 SWD 下载 调试配置

    找到一篇比较好的 关于stm32  SWD模式 下载 调试 配置文章 整理如下:       我们比较常用的是Jlink下载器 ,这种下载器有一个缺点就是使用的Jtag 20PIN接口,太多的PIN会 ...

  4. WSGI和PASTE

    WSGI就是一个标准,WSGI server就是实现了这个标准的一个容器.这个标准类似于如下的东东: 1 2 3 4 5 6 7 8 9 10 11 from wsgiref.simple_serve ...

  5. 浅析Netty的异步事件驱动(二)

    上一篇文件浅析了Netty中的事件驱动过程,这篇主要写一下异步相关的东东. 首先,什么是异步了? 异步的概念和同步相对.当一个异步过程调用发出后,调用者不能立刻得到结果.实际处理这个调用的部件在完成后 ...

  6. cocos2d-x的helloLua例子函数名定义误导初学者

    初次研究cocos2d-x, cocos2d-x支持lua是一个很不错的功能,使用lua来开发有个最大的好处就是不用每次改了游戏代码都编译,大多数情况下改了脚本直接运行程序就可以了,发布更新时也不用更 ...

  7. Hadoop MapReduce编程 API入门系列之mr编程快捷键活用技巧详解(四)

    1.Shift + Alt + S Hadoop没有使用jdk自带的默认序列化机制. 现在呢,hadoop-2.*里有两套序列化机制.一个是自己hadoop的序列化机制,一个是谷歌的. 所以,要改为. ...

  8. <转>HTML中的table转为excel

    转换html 中的table 为excel,firefox浏览器支持,代码如下 <%@ page language="java" contentType="text ...

  9. Java网络编程(TCP协议-服务端和客户端交互)

    客户端: package WebProgramingDemo; import java.io.IOException; import java.io.InputStream; import java. ...

  10. oracle强制使用索引

    select /*+ INDEX(表名,索引名称) */ col_1,...from xxx