多态,虚拟方法,重写,接口,类库,委托,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 dynamic万能变量
多态,虚拟方法,重写,接口,类库,委托,is,as运算符,泛型集合,万能变量的更多相关文章
- 类与接口(五)java多态、方法重写、隐藏
一.Java多态性 面向对象的三大特性:封装.继承.多态. 多态的类型,分为以下两种: 编译时多态: 指的是 方法重载.编译时多态是在编译时确定调用处选择那个重载方法,所以也叫 静态多态,算不上真正的 ...
- C#属性-索引器-里氏替换-多态-虚方法-抽象-接口-泛型-
1.属性 //属性的2种写法 public class person { private string _name; public string Name { get { return _name; ...
- C#基础精华03(常用类库StringBuilder,List<T>泛型集合,Dictionary<K , V> 键值对集合,装箱拆箱)
常用类库StringBuilder StringBuilder高效的字符串操作 当大量进行字符串操作的时候,比如,很多次的字符串的拼接操作. String 对象是不可变的. 每次使用 System. ...
- 2016年11月27日--面向对象:多态、类库、委托、is和as运算符、泛型集合
1.虚方法 virtual 重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写,子类重写父类的方法 ...
- 多态、类库、委托、is和as运算符、泛型集合
多态:简而言之就是龙生九子,各有不同 有了继承,才有了多态 1.虚方法 virtual 重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了v ...
- java的方法重写 ,多态和关键字 instanceof和final
package cn.pen; /*final 是一个java的关键字,用于修饰局部变量.属性.方法.类,表示最终的意思. final修饰类表示最终类,无法被继承.public final class ...
- Java8函数式接口/Lambda表达式/接口默认方法/接口静态方法/接口冲突方法重写/lambda表达式指定泛型类型等
一:函数式接口 1.函数式接口的概念就是此接口必须有且只能有一个抽象方法,可以通过@FunctionalInterface来显示规定(类似@Override),但是没有此注解的但是只有一个抽象方法的接 ...
- C#通过虚方法实现方法重写—多态。
class Program { //希望person存的是哪个类的对象就调用哪个类的方法 //第一步 将父类中对应方法家virtual关键字 变为虚方法(子类可重写) //子类中方法用override ...
- Golang 中的 面向对象: 方法, 类, 方法继承, 接口, 多态的简单描述与实现
前言: Golang 相似与C语言, 基础语法与C基本一致,除了广受争议的 左花括号 必须与代码同行的问题, 别的基本差不多; 学会了C, 基本上万变不离其宗, 现在的高级语言身上都能看到C的影子; ...
随机推荐
- linux环境变量与本地变量
两者不同的是. 环境变量可以在shell的子进程中使用, 而本地变量不同. 每当连接上服务器时,服务器就会通过帐号密码运行一个SHELL,我们所做的工作都在这个SHELL上,特殊方法除外(如,守护进程 ...
- Spring 中 Xml配置文件属性的说明
Xml配置文件属性的说明: <bean id="TheAction" ⑴ class="net.xiaxin.spring.qs.UpperAction" ...
- ios blog
转得一个朋友的博客,大家可以看哈(主要时国外的) 主要分开发教程.示例项目.UI设计.问题解决几块. 开发教程: 即便过了入门阶段,还是要经常看看一些不错的实例教程. .http://mobile.t ...
- [转]iis7.5+win2008 出现 HTTP Error 503. The service is unavailable.
解决: 应用程序池启动32位应用程序 设置托管管道为集成 (仍然有问题) 试试以下方法: http://phpwind.me/1222.html 楼主 发表于: 2011-11-26 图片: ...
- BackgroundWorker的使用
一个程序中需要进行大量的运算,并且需要在运算过程中支持用户一定的交互,为了获得更好的用户体验,使用BackgroundWorker来完成这一功能. 基本操作: bgw.RunWorkerAsync ...
- 更改EBS APPS 密码流程
更改EBS APPS 密码流程 (更改完后重启APP 和DB)2008-1-4 在EBS11.5.10.2环境应用成功! 参考metalink Note:160337.1 How To Manual ...
- DDR3命令状态(二)
DDR3中的状态机Diagram,详见相册. ACT:Activate,表示输出行地址,和是否自动precharge控制位. PRE:Precharge,在读写后,可以根据A10来判断是否自己进行pr ...
- z/os上的tar和gzip(2)
前一篇文章写过了如何合成并压缩大批量文件,这篇文章解释一下如何在拿到压缩文件后如何解压并还原大批量文件. 解压缩的JCL很简单,如下所示,和压缩的JCL类似,只要把参数改成UNPACK,然后设置一 ...
- z/os上的tar和gzip
在*nix平台上玩过的人都知道,tar和gzip基本上是每天都要使用的,而且非常之好用.而Mainframer则比较痛苦,没有这么好用的东西,尤其是当需要通过网络传大批量的文件的时候很不方便. 不过总 ...
- OpenCV 简介
自版本OpenCV2.2开始,OpenCV库便被划分为多个模块.这些模块编译成库文件后,位于lib文件夹中. opencv_core模块,包含核心功能,尤其是底层数据结构和算法函数. opencv_i ...