多态:
简而言之就是龙生九子,各有不同

有了继承,才有了多态

1、虚方法 virtual
重写 override

父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写

子类重写父类的方法使用的是override关键字

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace 多态
{
public class Fly
{
public virtual string Fling()
{
return "拍拍翅膀就能飞!!!";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace 多态
{
public class Plane:Fly
{
public override string Fling()
{
return "喷火就能飞!!!";
}
}
}

2、抽象类
是因为普通的多态虚方法没有人用本身的方法主体,那么不如只建立方法框架,继承后自己写方法

抽象类就是专门当父类的,abstract
抽象类中可以有抽象方法:abstract
抽象方法一定在抽象类中,但是抽象类中不一定只有抽象方法,也可以有普通方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace 抽象类
{
public abstract class Fly
{
public abstract string Fling(); public string Eat()
{
return "吃小米";
} }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace 抽象类
{
public class Bird : Fly
{
public override string Fling()
{
return "拍拍翅膀就能飞!!";
} }
}

3、接口

假设人为一个对象

吃饭,睡觉 - 基础类
技能,地点 - 赚钱类
娱乐1,娱乐2 - 娱乐类

接口就是出来做 干爹的,接口不是类 interface
编写方法格式: string 方法名();
实现接口的方法 不要override,直接正常编写就可以了

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace 接口
{
public abstract class JiChu
{
public abstract string ChiFan(); public abstract string ShuiJiao(); }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace 接口
{
interface ZhuanQian
{
string JiNeng();
string DiDian();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace 接口
{
interface YuLe
{
string YuLe1();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace 接口
{
class NanRen : JiChu, ZhuanQian, YuLe
{
public override string ChiFan()
{
return "大口吃饭";
} public override string ShuiJiao()
{
return "大字型睡";
} public string JiNeng()
{
return "敲代码";
} public string DiDian()
{
return "白宫";
} public string YuLe1()
{
return "LOL";
} }
}

多态总结:越往后继承的子类功能越完善

类库:
其实就是一堆类文件,只不过用户看不到这些类的源代码,保密性好。

优点:保密性好
缺点:如果这个方法不好用,使用者无法自己去更改它。

类文件是.cs    类库是.dll

新建项目为类库,在debug文件夹下找到dll文件

委托:
委托可以理解为:函数的指针

关键词:delegate

声明:
public delegate int FirstDel(int a, int b);

创建委托变量:
FirstDel 名字 = 与这个委托类型相同的方法;

is和as运算符:

is : 判断某一个对象是否是某一种类型
对象 is 类型名 是这种类型返回 true 不是返回 false

as : 将某一个对象转换成某一种类型,如果转换不成功,那么会给这个对象赋一个null,不会抛出异常

泛型集合 List<T>
综合了集合与数组的优点,
固定数据类型,不限制长度的一种集合

List<类型> 集合名 = new List<类型>();

var 万能变量

多态、类库、委托、is和as运算符、泛型集合的更多相关文章

  1. 类库,委托,as.is,var,泛型集合

    类库: 就是让别人调用你写的方法,并且不让别人看到你是怎么实现的.(比如说一些核心文件) 如果有功能你不会做,需要别人帮忙,那么你的同事可以帮你写好一个类,然后你来调用这个类中的方法,完成你的项目. ...

  2. 2016年11月27日--面向对象:多态、类库、委托、is和as运算符、泛型集合

    1.虚方法 virtual 重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写,子类重写父类的方法 ...

  3. 多态,虚拟方法,重写,接口,类库,委托,is,as运算符,泛型集合,万能变量

    多态:简而言之就是龙生九子,各有不同 有了继承,才有了多态 1.虚方法 virtual重写 override父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了vir ...

  4. C#—类库、委托、is和as运算符、泛型集合

    类库 类库(Class Library)是一个综合性的面向对象的可重用类型集合,这些类型包括:接口.抽象类和具体类.类库可以解决一系列常见编程任务(包括诸如字符串管理.数据收集.数据库连接以及文件访问 ...

  5. 类库,委托,is和as运算符,泛型集合

    类库:其实就是一堆类文件,只不过用户看不到这些类的源代码,保密性好. 优点:保密性好缺点:如果这个方法不好用,使用者无法自己去更改它. 类文件是.cs    类库是.dll 新建项目为类库,在debu ...

  6. 类库、委托、is as运算符、泛型集合

    类库: 说白了,就是让别人调用你写的方法,并且不让别人看到你是怎么实现的. 如果有功能你不会做,需要别人帮忙,那么你的同事可以帮你写好一个类,然后你来调用这个类中的方法,完成你的项目. 1.C#源代码 ...

  7. 面向对象--类库、委托、is和as运算符、泛型集合

    类库: 其实就是一堆类文件,只是看不到这些类的源代码,保密性好. 优点:保密性好 缺点:如果这个方法不好用,使用者无法自己去更改它. 给的大多是dll文件.使用方法:引用右键,添加引用,浏览,选择到相 ...

  8. 面向对象——is和as运算符、泛型集合 List<T>

    二:is和as运算符: (1) is运算符 is 运算符用于检查对象是否与给定类型兼容.如果兼容返回true,否则返回false; 一般用于查看某个类是否实现了某个接口,或者是不是某个类的子类; 例如 ...

  9. C#基础精华03(常用类库StringBuilder,List<T>泛型集合,Dictionary<K , V> 键值对集合,装箱拆箱)

    常用类库StringBuilder StringBuilder高效的字符串操作 当大量进行字符串操作的时候,比如,很多次的字符串的拼接操作. String 对象是不可变的. 每次使用 System. ...

随机推荐

  1. MAC OS X 常用通用快捷键

    注:由于使用的是Windows键盘,习惯了Ctrl + c/v复制粘贴,所以修改了修饰键,Command(⌘)键和Control(^)键互换,以下的Ctrl键均为Command键,对应键盘上的实际左C ...

  2. [Android] how to get facebook profile

    Bundle params = new Bundle(); params.putString("fields", "id,email,gender,cover,pictu ...

  3. C# 对象操作

    //********************************************************************************* //************** ...

  4. 【XLL 框架库函数】 Excel/Excel12f

    Excel/Excel12f 这两个库函数分别包装了 C API 中的 Excel4 和 Excel12 函数,它们会检查函数没有参数时是否为零,它将表明创建临时的 XLOPER 或 XLOPER12 ...

  5. IOS-UIIamge初始化的几种方法的比较

    一.imageNamed——方法介绍imageNamed:是UIImage的一个类方法,它做的事情比我们看到的要稍微多一些.它的加载流程如 下:1.系统回去检查系统缓存中是否存在该名字的图像,如果存在 ...

  6. 微信支付官方.net版之坑你没商量

    最近开始弄支付这块,先是支付宝手机网站支付,也是坑了我许久,不过还好,问题不大. 让我们看看微信支付有多少坑 微信商户平台,你们知道么(我前天才知道,别笑我) 登录地址:https://mch.wei ...

  7. July 9th, Week 28th Saturday, 2016

    Every cloud has a silver lining. 山穷水尽疑无路,柳暗花明又一村. Every cloud has a silver lining, that just because ...

  8. endnote设置文献第二行悬挂缩进办法

    参考:http://blog.sina.com.cn/s/blog_62b13cf201014lfr.html  使用[endnote]插入文献后,如果文献稍长些,有第二行,第二行会顶格开始.并且这个 ...

  9. Oulipo(poj 3461)

    题意:求b这个字符串在a中出现的次数 这里不用KMP,用hash #include<cstdio> #include<iostream> #include<cstring ...

  10. DO语句与SELECT语句,HANDLER语句

    DO语句,只执行语句不返回结果:SELECT 既执行语句也返回结果. HANDLER的效率会更好. HANDLER 语句比SELECT 语句更快: 1,HANDLER只需OPEN一次,能重用,不须每次 ...