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 方法不允许重载;
随机推荐
- android中OnItemClickListener的参数解释
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) {} ...
- Java之DataInputStream和DataOutputStream-用流操作基本数据类型
package FileDemo; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.Fi ...
- [Xcode使用 - 2] 设置APP图标和启动画面
1.App Icon 把所有图标文件拖放到 “Images.xcassets” 的”AppIcon” 里面 应对非视网膜和视网膜屏,APP有时会提供两套不同大小的图片,1倍图和2倍图,它们 ...
- [Objective-c 基础 - 3.1] 内存管理
A.内存存放.retain.release 1.栈内存:存放局部变量,运行超过变量作用域自后编译器自动回收 2.堆内存:存放对象(地址,对象实体) 3.对象的基本结构 (1)引用计数器(4字节):当计 ...
- iOS开发之详解正则表达式
本文由Charles翻自raywenderlich原文:NSRegularExpression Tutorial: Getting Started更新提示:本教程被James Frost更新到了iOS ...
- Idea的Git使用
在使用Git来pull和push代码的时候会发生冲突的情况,如果处理不当则会出现无法pull和push代码的情况.所以这个是十分有必要注意的. 那么我来说几句自己的总结吧: 1.先看下idea的Git ...
- Egret的第一个2048游戏
http://bbs.egret-labs.org/thread-242-1-1.html 对于AS3的开发者来说,可以直接过渡到的HTML5框架就是Egret了,基本上是了解了TypeSprite的 ...
- DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践
http://www.cnblogs.com/xishuai/p/ddd-repository-iunitofwork-and-idbcontext.html
- 剑指OFFER之字符串的排列(九度OJ1369)
题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入: 每个 ...
- 【转】使用junit进行单元测试(中级篇)
转自:http://blog.csdn.net/andycpp/article/details/1327346 我们继续对初级篇中的例子进行分析.初级篇中我们使用Eclipse自动生成了一个测试框架, ...