为了账号安全,请及时绑定邮箱和手机立即绑定

C#面向对象编程

kong66 全栈工程师
难度入门
时长 3小时17分
学习人数
综合评分9.47
105人评价 查看评价
9.7 内容实用
9.2 简洁易懂
9.5 逻辑清晰
  • 1.泛型类:装载同类型类的容器,实例化泛型类后依靠泛型类内中的方法连续处理相同类型的类

    class A<T>{}   //泛型类

    class B{}   //B类

    A a =new A<B>()  //实例化传入类B

    2.泛型方法,可以在泛型类中也可以是普通类

    public void print<T>(T t){ 

        return defualt(T);    //返回传入的类的写法

    }  //传入t可以是类也可以是数据

    3.加入约束可以规定泛型类或泛型方法的传入值类型,解决2的问题

    class A<T> where T:······{} 

    public void print<T>(T t)  where T:······{}     // ······可以是a.具体类名[本类以及派生类],class[所有类都可以],struct[所有结构都可以];  b.具体接口名或泛型接口[本接口以及实现该接口的类型];   c.     new( ) [带有无参数并且共有的构造函数的相关类型,好像是让泛型类实例化后可以调用传入类的构造函数]。注意:同时有约束多个,必须是主约束只一个【a的三个只能有一个】,再来是若干个接口约束【可以多个接口】,构造约束的顺序。

    4.泛型接口,格式和泛型类大致相同,注意接口和类本身的不同就行

    查看全部
    0 采集 收起 来源:泛型类

    2018-10-21

  • 重载运算符,不可改变运算原有规则,如加变减,其实是可以用方法完成所要的运算功能,只是利用已有的运算符规则,简化过程直接使用重载的运算符;

    除=,&&,||,[ ]索引,( )的运算符都可以重载,一元运算符必须操作对象是类或结构,二元至少有一个是类或结构,在(实例化后)类或结构直接使用重载运算符,如A++;

    public static 返回值类型 operator 运算符 (B b){}

    查看全部
    0 采集 收起 来源:重载运算符

    2018-10-19

  • 自定义装换,主要是类或结构使用,区别是显示在调用时需要加括号,括号内是需要装换类型的对象,如A a=new A(); a=(A)B;如果是隐式就直接B赋给a;

    显式装换语法public static explicit operator A(B b){`````}

    隐式示装换语法public static implicit operator A(B b){`````}

    查看全部
    0 采集 收起 来源:自定义转换

    2018-10-19

  • 装箱,使用的是类型装换的方法,但实质是创建一个新的引用类型数据,与原来的值类型数据完全无关,两方重新赋值互不影响;

    查看全部
    0 采集 收起 来源:装箱和拆箱

    2018-10-19

  • 静态只能处理静态成员,静态构造函数处理静态变量,静态构造函数不带访问类型;

    静态类不可继承;

    查看全部
    0 采集 收起 来源:静态类

    2019-08-01

  • 接口内成员默认public,不能写访问类型;

    同时有继承父类和接口时,继承父类写最前;

    查看全部
    0 采集 收起 来源:接口

    2018-10-19

  • sealed密闭类不可再继承;密闭方法不可被重写(就算是已有派生类中的重写方法也可在最前加sealed防止下一级子类重写该类的重【写】方法)

    查看全部
    0 采集 收起 来源:密闭类

    2018-10-19

  • 1.所有子类都有相同的一个使用字段时,可以将该字段的的赋值交给父类的构造函数,由子类传入即可(因为实例化是是先调用父类构造函数再子类的构造函数)。

    public A(string name){ this.name=name;}  //父类构造函数

    public B(string name):base(name){}  //子类构造函数

    2.不想如1的话,在子类的构造函数后加this就可以使用本子类的构造函数,这样实例化时使用的就是子类构造函数

    public B(string name):this(name){}  //子类构造函数


    查看全部
    0 采集 收起 来源:构造函数

    2018-10-19

  • 接口的作用: 类可以调用这个方法,接口也可以调用这个方法。其他类也可以声明这个接口,使得类更加强大。 另外可以从另一个角度观察类:利用数组看到,有这个接口的类(会这个方法的)有什么。
    查看全部
    0 采集 收起 来源:接口

    2018-10-12

  • 2先写要继承的基类,后写接口名。 3.在实现接口的时候要写public,但是在定义接口的时候不可以写public(也默认。
    查看全部
    0 采集 收起 来源:接口

    2018-10-12

  • 如果通过c对象来调用,则可以调用这个类本身含有的函数。但通过接口调用(尽管这个接口是由那个类强制转化过来的),也只能调用到这个接口定义的函数。
    查看全部
    0 采集 收起 来源:接口

    2018-10-12

  • 1.区别于虚方法,虚方法允许派生类中不重写,但抽象方法不可以。这是由于在基类中定义抽象方法时,不允许定义函数实体,所以必须在派生里override
    查看全部
  • 虚方法和多态

    一个设计原则:

    面向对象编程中,都遵循一个原则:依赖倒置原则。就是程序设计要依赖于抽象类,而不依赖于具体类;

    基类的引用:-----基类类型的引用指向派生类;

    派生类的对象包含基类部分和派生类部分,所以,我们可以通过一个基类类型的引用指向派生类。通过指向派生类的基类引用,我们仅仅能访问派生类的基类部分;

    虚方法和多态的武器:

    虚方法:声明为virtual的方法就是虚方法。基类的虚方法可以在派生类中使用override进行重写;

    多态:通过指向派生类的基类引用,调用虚函数,会根据引用所指向派生类的实际类型,调用派生类的同名重写函数,即为多态;

    https://img1.sycdn.imooc.com//5bbdf86400013f0407570432.jpghttps://img1.sycdn.imooc.com//5bbdf9120001cda507640402.jpghttps://img1.sycdn.imooc.com//5bbdf92c0001cda507640402.jpg

    关于虚方法的其他知识点:

    1. 重写虚方法必须具体相同的可访问性,且基类方法不能是private;

    2. 不能重写static方法或者非虚方法;

    3. 方法,属性,索引器,事件,都可以声明为virtual 或override

    查看全部
    0 采集 收起 来源:虚方法和多态

    2018-10-10

  • 隐藏:

    我们不能删除基类中的任何成员,但是可以用与基类成员名称相同的成员来屏蔽基类成员;

    语法细节:

    屏蔽数据成员:在派生类中声明名称和类型相同的成员;

    屏蔽函数成员:在派生类中声明新的带有相同函数签名的成员;要求函数名,参数的类型及个数必须相同,但是函数的返回值可以不同;

    让编译器知道:可以添加new关键字,否则会警告;

    ---例子:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                dog dogs = new dog();
                dogs.strName = "小黑";
                dogs.writename();
                cat cats = new cat();
                cats.strName = "小花";
                cats.writename();
                Console.ReadKey();

            }
        }
        public class pet
        {
            public string strName;

            public void writename()
            {
                Console.WriteLine("Pet's name is" + strName );
            }
        }

        public class dog : pet
        {

    ----隐藏基类的函数,使用new关键字
           new public void writename()
            {
                Console.WriteLine("宠物的名字是" + strName);
            }
        }

    ---继承基类pet
        public class cat : pet
        {
       
        }
    }

    查看全部
    0 采集 收起 来源:隐藏方法

    2018-10-09

  • 继承:

    继承:一个类派生于另一个基类型;它拥有该基础类型的所有成员字段和函数;

    class childclass : parentclass

    {

    }

    查看全部
    0 采集 收起 来源:隐藏方法

    2018-10-09

举报

0/150
提交
取消
课程须知
1、需要掌握c#基础语法和基本概念 2、建议听课和写代码实践相结合,更好的掌握知识点
老师告诉你能学到什么?
1、通过学习继承和多态,构建对象的森林,减少重复代码 2、学习静态成员静态类,实现对象间的共享资源和扩展非派生类 3、学习接口,可以跨类型地实现对象的统一管理 4、学习操作符重载,大大简化我们自定义对象的相关操作 5、学习泛型,极大地降低了开发的工作量

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!