多态、类库、委托、is和as运算符、泛型集合
多态:
简而言之就是龙生九子,各有不同
有了继承,才有了多态
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运算符、泛型集合的更多相关文章
- 类库,委托,as.is,var,泛型集合
类库: 就是让别人调用你写的方法,并且不让别人看到你是怎么实现的.(比如说一些核心文件) 如果有功能你不会做,需要别人帮忙,那么你的同事可以帮你写好一个类,然后你来调用这个类中的方法,完成你的项目. ...
- 2016年11月27日--面向对象:多态、类库、委托、is和as运算符、泛型集合
1.虚方法 virtual 重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写,子类重写父类的方法 ...
- 多态,虚拟方法,重写,接口,类库,委托,is,as运算符,泛型集合,万能变量
多态:简而言之就是龙生九子,各有不同 有了继承,才有了多态 1.虚方法 virtual重写 override父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了vir ...
- C#—类库、委托、is和as运算符、泛型集合
类库 类库(Class Library)是一个综合性的面向对象的可重用类型集合,这些类型包括:接口.抽象类和具体类.类库可以解决一系列常见编程任务(包括诸如字符串管理.数据收集.数据库连接以及文件访问 ...
- 类库,委托,is和as运算符,泛型集合
类库:其实就是一堆类文件,只不过用户看不到这些类的源代码,保密性好. 优点:保密性好缺点:如果这个方法不好用,使用者无法自己去更改它. 类文件是.cs 类库是.dll 新建项目为类库,在debu ...
- 类库、委托、is as运算符、泛型集合
类库: 说白了,就是让别人调用你写的方法,并且不让别人看到你是怎么实现的. 如果有功能你不会做,需要别人帮忙,那么你的同事可以帮你写好一个类,然后你来调用这个类中的方法,完成你的项目. 1.C#源代码 ...
- 面向对象--类库、委托、is和as运算符、泛型集合
类库: 其实就是一堆类文件,只是看不到这些类的源代码,保密性好. 优点:保密性好 缺点:如果这个方法不好用,使用者无法自己去更改它. 给的大多是dll文件.使用方法:引用右键,添加引用,浏览,选择到相 ...
- 面向对象——is和as运算符、泛型集合 List<T>
二:is和as运算符: (1) is运算符 is 运算符用于检查对象是否与给定类型兼容.如果兼容返回true,否则返回false; 一般用于查看某个类是否实现了某个接口,或者是不是某个类的子类; 例如 ...
- C#基础精华03(常用类库StringBuilder,List<T>泛型集合,Dictionary<K , V> 键值对集合,装箱拆箱)
常用类库StringBuilder StringBuilder高效的字符串操作 当大量进行字符串操作的时候,比如,很多次的字符串的拼接操作. String 对象是不可变的. 每次使用 System. ...
随机推荐
- MAC OS X 常用通用快捷键
注:由于使用的是Windows键盘,习惯了Ctrl + c/v复制粘贴,所以修改了修饰键,Command(⌘)键和Control(^)键互换,以下的Ctrl键均为Command键,对应键盘上的实际左C ...
- [Android] how to get facebook profile
Bundle params = new Bundle(); params.putString("fields", "id,email,gender,cover,pictu ...
- C# 对象操作
//********************************************************************************* //************** ...
- 【XLL 框架库函数】 Excel/Excel12f
Excel/Excel12f 这两个库函数分别包装了 C API 中的 Excel4 和 Excel12 函数,它们会检查函数没有参数时是否为零,它将表明创建临时的 XLOPER 或 XLOPER12 ...
- IOS-UIIamge初始化的几种方法的比较
一.imageNamed——方法介绍imageNamed:是UIImage的一个类方法,它做的事情比我们看到的要稍微多一些.它的加载流程如 下:1.系统回去检查系统缓存中是否存在该名字的图像,如果存在 ...
- 微信支付官方.net版之坑你没商量
最近开始弄支付这块,先是支付宝手机网站支付,也是坑了我许久,不过还好,问题不大. 让我们看看微信支付有多少坑 微信商户平台,你们知道么(我前天才知道,别笑我) 登录地址:https://mch.wei ...
- July 9th, Week 28th Saturday, 2016
Every cloud has a silver lining. 山穷水尽疑无路,柳暗花明又一村. Every cloud has a silver lining, that just because ...
- endnote设置文献第二行悬挂缩进办法
参考:http://blog.sina.com.cn/s/blog_62b13cf201014lfr.html 使用[endnote]插入文献后,如果文献稍长些,有第二行,第二行会顶格开始.并且这个 ...
- Oulipo(poj 3461)
题意:求b这个字符串在a中出现的次数 这里不用KMP,用hash #include<cstdio> #include<iostream> #include<cstring ...
- DO语句与SELECT语句,HANDLER语句
DO语句,只执行语句不返回结果:SELECT 既执行语句也返回结果. HANDLER的效率会更好. HANDLER 语句比SELECT 语句更快: 1,HANDLER只需OPEN一次,能重用,不须每次 ...