1、关于面向对象的三个重要属性

 Encapsulation(封装):无法直接访问类的成员变量,而是通过一些get set方法,间接访问数据域;

Polymorphism(多态):静态绑定,动态绑定,通常通过继承来实现多态,通常通过重定义(override)父类的方法来实现,

在c#中,与c++类似(java则不需要),基类function必须定义为virtual才能实现多态动态绑定,从个人理解来说,是因为子类同时可以看做是‘父类’,或子类包含父类,因此父类的引用可以指向子类的实体,并且可调用子类中重定义的函数。

Inheritance(继承)c#与java都不允许多重继承(c++允许),但可以通过定义接口(interface)来实现多重继承。

2、c#中参数的类型:

(1)数值参数,直接copy,按值传递

(2)引用参数(加ref),同c++中的&运算符

例:void swap(ref num1,ref num2);

(3)输出参数out(与ref类似),实参传入时可不被赋值,但在函数返回前一定要被赋值。

     注:ref 与 out 在函数声明与调用时都得加上(即形参实参前都得加上)

     

(4)数组参数 params(只能是一维数组)

实参可以是同类型的数组名,也可以是若干个同类型的简单变量,并且在函数形参列表中要放在最后

3、c#中的特殊地方:

(1)引入property(属性)

[访问修饰符] 类型  属性名

{

get{}

set{}  // set属性带隐含的value值

}

(2)引入索引器(与属性类似)

[访问修饰符] 类型 this [ 类型  variable_name]

{

get{}

set{}  // set属性带隐含的value值

}

3、继承DerivedClass :BaseClass

(1)单一继承(同java)

(2)constructor 与 distructor 不被继承

(3)override 可覆盖基类函数,通过 base 关键字调用访问基类函数

(4)继承后的构造函数链和析构函数链

(5)调用基类constructor

public DerivedClassName (variable a,variable b,variable c):BaseClassName(a,b)

{

......

}

4、抽象类与interface

   (1)抽象类

    abstract class A{

       abstract public type function()

{

//没有函数实体

}

}

class B :A

{

public override type function()

{

//必须有函数实体

}

}

(2)interface  实现多重继承

   [访问修饰符]  interface  InterfaceName

{

[访问修饰符] type function()

//属性,方法只能定义不能实现

}

在子类中有两种接口成员的实现:隐式 & 显式

隐式与java同

显式带有接口名前缀,同时该方法只能通过接口成员的引用来调用

5、多态

  (1)Base类必须定义为 virtual 函数

(2)子类 override 父类函数,而不能是 new

Lesson 3的更多相关文章

  1. Lesson 18 He often does this!

    Text After I had had lunch at a village pub, I looked for my bag. I had left it on a chair beside th ...

  2. Lesson: The "Hello World!" Application

    Lesson: The "Hello World!" Application The sections listed below provide detailed instruct ...

  3. [小北De编程手记] : Lesson 06 玩转 xUnit.Net 之 定义自己的FactAttribute

    xUnit.Net本身提供了标记测试方法的标签Fact和Theory.在前面的文章<Lesson 02 玩转 xUnit.Net 之 基本UnitTest & 数据驱动>中,也对它 ...

  4. [小北De编程手记] : Lesson 04 玩转 xUnit.Net 之 Fixture(下)

    上一篇文章<[小北De编程手记] : Lesson 03 玩转 xUnit.Net 之 Fixture(上)>向大家介绍了xUnit.Net 共享数据的方式.Test Case的构造函数 ...

  5. [小北De编程手记] : Lesson 02 玩转 xUnit.Net 之 基本UnitTest & 数据驱动

    关于<玩转 xUnit.Net>系列文章,我想跟大家分享的不是简单的运行一下测试用例或是介绍一下标签怎么使用(这样的文章网上很多).上一篇<Lesson 01 玩转 xUnit.Ne ...

  6. [小北De编程手记] : Lesson 01 玩转 xUnit.Net 之 概述

    谈到单元测试,任何一个开发或是测试人员都不会觉得陌生.我想大多数的同学也都是接触过各种单元测试框架.关于单元测试的重要性,应该不会有太多的质疑.这个系列,我向大家介绍一下xUnit.Net的使用.就让 ...

  7. [小北De编程手记] : Lesson 08 - Selenium For C# 之 PageFactory & 团队构建

    本文想跟大家分享的是Selenium对PageObject模式的支持和自动化测试团队的构建.<Selenium For C#>系列的文章写到这里已经接近尾声了,如果之前的文章你是一篇篇的读 ...

  8. [小北De编程手记] : Lesson 07 - Selenium For C# 之 窗口处理

    在实际的自动化测试过程中,我们会遇见许多需要对窗口进行处理的情况.比如,点击删除某条信息的时候系统会显示一个Alert框.或者点击某个超链接时会在浏览器中打开一个新的页面.这一篇,来和大家分享一下Se ...

  9. [小北De编程手记] : Lesson 06 - Selenium For C# 之 流程控制

    无论你是用哪一种自动化测试的驱动框架,当我们构建一个复杂应用程序的自动化测试的时候.都希望构建一个测试流程稳定,维护成本较低的自动化测试.但是,现实往往没有理想丰满.而这一篇,我会为大家讲解我们在使用 ...

  10. [小北De编程手记] : Lesson 01 - Selenium For C# 之 环境搭建

    在我看来一个自动化测试平台的构建,是一种很好的了解开发语言,单元测试框架,自动化测试驱动,设计模式等等等的途径.因此,在下选择了自动化测试的这个话题来和大家分享一下本人关于软件开发和自动化测试的认识. ...

随机推荐

  1. Java:详解内部类

    可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...

  2. Linux的系统安全设置Shell脚本

    #!/bin/sh # desc: setup linux system security # powered by www.lvtao.net #account setup passwd -l xf ...

  3. ionic 向路由中的templateUrl(模板页)传值

    .state('product', { url: '/product/:id', templateUrl: function ($routeParams) { return '/Product/Ind ...

  4. 「日常训练」「小专题·USACO」 Ski Course Design (1-4)

    题目 以后补 分析 mmp这题把我写蠢哭了 我原来的思路是什么呢? 每轮找min/max,然后两个决策:升min/降max 像这样子dfs找最优,然后花式剪枝 但是一想不对啊,这才1-4,哪有那么复杂 ...

  5. fildder抓包工具详解

    fildder页面介绍名称和含义 名称 含义 # 抓取HTTP Request的顺序,从1开始,以此递增 Result HTTP状态码 Protocol 请求使用的协议,如HTTP/HTTPS/FTP ...

  6. NOI中“大整数加法”问题不能AC的解决建议

    一.检查输入000和00相加是否出结果. 二.数组不要开小了,亲测256的数组不够.推荐1024.   附录AC程序: 如果不能AC请将256改为1024,255改为1023. #include &l ...

  7. MySQL统计数据库大小

    select concat(truncate(sum(data_length)/1024/1024,2),'mb') as data_size, concat(truncate(sum(max_dat ...

  8. php+Mysql 页面登录代码

    登录界面设置: <?php/** * Created by xx. * User: msi * Date: 2017/10/26 * Time: 18:12 *///session每次用之前都要 ...

  9. group by 分组后 返回的是一个同属性的集合

    group by 分组后 返回的是一个同属性的集合  我们可以遍历该集合

  10. 【bzoj3514】Codechef MARCH14 GERALD07加强版 LCT+可持久化线段树

    题目描述 N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. 输入 第一行四个整数N.M.K.type,代表点数.边数.询问数以及询问是否加密.接下来M行,代表图中的每条边 ...