多态、类库、委托、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 万能变量

时间: 2024-10-10 11:05:40

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

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

类库: 就是让别人调用你写的方法,并且不让别人看到你是怎么实现的.(比如说一些核心文件) 如果有功能你不会做,需要别人帮忙,那么你的同事可以帮你写好一个类,然后你来调用这个类中的方法,完成你的项目. 在另一个项目中添加一个类,写好函数.然后找到源文件复制,在要添加的项目中粘贴该类,然后引用(using XXX;).实例化之后就可以引用了. 1.C#源代码文件,包括在自己的项目中 using System; using System.Collections.Generic; using Syste

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

1.虚方法 virtual 重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写,子类重写父类的方法使用的是override关键字 例: 我们都知道,喜鹊(Magpie).老鹰(Eagle).企鹅(Penguin)都是属于鸟类,我们可以根据这三者的共有特性提取出鸟类(Bird)做为父类,喜鹊喜欢吃虫子,老鹰喜欢吃肉,企鹅喜欢吃鱼. 创建基类Bird如下,添加一个虚方法Eat(): /// <sum

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

多态:简而言之就是龙生九子,各有不同 有了继承,才有了多态 1.虚方法 virtual重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写 子类重写父类的方法使用的是override关键字 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 多态 { publ

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

类库:其实就是一堆类文件,只不过用户看不到这些类的源代码,保密性好. 优点:保密性好缺点:如果这个方法不好用,使用者无法自己去更改它. 类文件是.cs    类库是.dll 新建项目为类库,在debug文件夹下找到dll文件 委托:委托可以理解为:函数的指针 关键词:delegate 声明委托类型:public delegate int FirstDel(int a, int b); FirstDel不是类,是委托变量,不能实例化(不能new), 创建委托变量:FirstDel 名字 = 与这个

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

类库: 其实就是一堆类文件,只是看不到这些类的源代码,保密性好. 优点:保密性好 缺点:如果这个方法不好用,使用者无法自己去更改它. 给的大多是dll文件.使用方法:引用右键,添加引用,浏览,选择到相应的dll文件,确定.然后在开头加上 [using 命名空间名字] 委托: 委托可以理解为函数的指针. 关键词:delegate 声明:public delegate int FirstDel(int a, int b); 创建委托变量:FirstDel 名字 = 与这个委托类型相同的方法; 在cl

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

类库 类库(Class Library)是一个综合性的面向对象的可重用类型集合,这些类型包括:接口.抽象类和具体类.类库可以解决一系列常见编程任务(包括诸如字符串管理.数据收集.数据库连接以及文件访问等任务),还可以解决多种专用开发任务(控制台应用程序.桌面应用程序.WEB应用程序等). 优点:保密性好,用户无法看到方法结构体 缺点:如果这个方法不好用,使用者无法自己去更改它. 鼠标放在类上按下F12可以查看程序集 1.创建类库 类库创建完成,它默认public,并且没有主函数,无法进行启动,它

类库 委托

1.C#源代码文件,包括在自己的项目中 2.类库,后缀名是.dll 优点:你写的方法别人看不到实现过程,保密性强 缺点:如果你写的方法有错误,别人无法更改 委托:可以理解为 函数的指针 delegate - 定义关键词 声明委托类型public delegate int FirstDel(int aaa, int bbb); 创建委托变量,赋值,函数指向FirstDel f1 = new JiaJian().Jia; int c = f1(10, 20); var:万能类型 object:所有类

面向对象——is和as运算符、泛型集合 List&lt;T&gt;

二:is和as运算符: (1) is运算符 is 运算符用于检查对象是否与给定类型兼容.如果兼容返回true,否则返回false; 一般用于查看某个类是否实现了某个接口,或者是不是某个类的子类; 例如,要检查变量是否与object类型兼容: 注意:"兼容"表示对象是该类型,或者派生于该类型. object o = new object(); if (o is Label) { Label lb = (Label)o; Response.Write("类型转换成功")

进一步对泛型集合的思考

一.前言: 经常听师哥师姐们说底层这个底层那个,从没见过这个"底层".后来师姐就在项目中应用了这个底层类库,从听说它到自己亲自用它,才发现它还真是强大的不得了啊!经常跟着师哥师姐们的课听,就是想跟这个底层混个"脸熟".我也经常是不懂装懂,其实真正听懂的也没多少啊..不仅脸熟了,还脸皮厚呢.. 言归正传为什么又提起泛型集合了呢?第一次接触是在机房重构的时候,Data Table转换成泛型集合.后来敲这个系统的时候,看到封装的类库中绝大多数的返回结果都是泛型集合.委托和