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

C#面向对象编程

kong66 全栈工程师
难度入门
时长 3小时17分
学习人数
综合评分9.47
105人评价 查看评价
9.7 内容实用
9.2 简洁易懂
9.5 逻辑清晰
  • 对于不需要长时间存储,就是生命周期比较短的东西我们可以定义为结构,使用struct来进行声明,比如说我们人类吃的食物

    struct   food{

    string name;

    int weight;

    int size;


    }

    查看全部
    0 采集 收起 来源:结构和类

    2019-05-11

  • 一个类只能单继承,继承自一个父类,但是是可以实现多个接口的,但是在写的时候是要按照下面的顺序来写的:继承的父类,实现的接口一,实现的接口二,,,,

    virtual开头定义的方法是虚方法,父类里面定义了一个虚方法,然后继承他的子类可以用override重写这个方法,也可以不重写这个方法。

    abstract开头定义的属性是抽象属性,abstract开头定义的方法我们称之为抽象方法,抽象方法只有函数声明是没有具体实现的函数体的,然后一个类里面如果有抽象方法或则是抽象属性的话,这个类是必须要声明为抽象类的,即abstract   class A {};但是一个抽象类里面是可以有或则是没有抽象属性、方法的;

    抽象类是可以抽象属性、方法和普通属性、方法共存的;

    抽象类不能实例化,只能被继承的,所以一些共性是可以放在一个抽象类里面的。如果一个类继承了抽象类,那么是必须要在子类里面实现他的抽象方法的,要不然该子类也是一个抽象类,不能实例的

    接口是一组函数的集合类似于,这些函数默认都是public,并且只有声明没有具体的实现函数体的,接口只能被实现,不能实例化

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

    2019-05-11

  • https://img1.sycdn.imooc.com//5cd68a6d00014a9a10620550.jpg

    https://img1.sycdn.imooc.com//5cd68b680001976210540564.jpg

    https://img1.sycdn.imooc.com//5cd68bb50001cf0f08420598.jpg

    接口里面的方法默认都是public的,并且是不可以实现的,就是是只有声明的是没有实现的函数体的,接口只能被实现,是不能实例化的,并且实现接口的类必须要实现该接口里面的方法的,并且在子类里面实现这个方法的时候是要在方法前面加上public的了

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

    2019-05-11

  •     class Dog:Pet,ww

        {

            //声明委托

            public delegate void Handler();

            //定义委托事件

            public static event Handler NewDog;

            public Dog(string name) : base(name)

            {

                if (NewDog != null)

                {

                    //触发事件

                    NewDog();

                }            

            }

        }

        class Client

        {

            //定义事件方法

            public void WantADog()

            {

                Console.WriteLine("dog");

            }

        }

        class Program

        {

            static void Main(string[] args)

            {

                    

                Client client1 = new Client();

                Client client2 = new Client();

                //绑定事件方法

                Dog.NewDog += client1.WantADog;

                Dog.NewDog += client2.WantADog;

                Dog dog2 = new Dog("A");

        }

    查看全部
    0 采集 收起 来源:事件

    2019-05-07

  •     class Program

        {

            //声明委托

            delegate void Actcute();

            static void Main(string[] args)

            {

                Actcute del = null;

                Dog dog1 = new Dog("A");

                Cat cat1 = new Cat("B");

                del = dog1.WagTall;

                del += cat1.innocentLook;

                //lambda 表达式绑定匿名委托

                del += () =>

                {

                    Console.WriteLine("do nothing");

                };

                del();


    查看全部
    0 采集 收起 来源:Lambda表达式

    2019-05-07

  •     class Program

        {

            //声明委托

            delegate void Actcute();

            static void Main(string[] args)

            {

                Actcute del = null;

                Dog dog1 = new Dog("A");

                Cat cat1 = new Cat("B");

                del = dog1.WagTall;

                del += cat1.innocentLook;

                del();

            }

        }


    查看全部
    0 采集 收起 来源:委托

    2019-05-07

  •             //字典

                Dictionary<string, Dog> dic = new Dictionary<string, Dog>();

                dic.Add("A", new Dog("A"));

                dic.Add("B", new Dog("B"));

                dic.Add("C", new Dog("C"));

                dic.Add("D", new Dog("D"));

                dic["A"].name();

                //堆栈 先进后出 后进先出

                Stack<Pet> pets = new Stack<Pet>();

                pets.Push(new Dog("A"));

                pets.Push(new Cat("B"));

                pets.Peek().name();

                //弹出最后进入的对象

                pets.Pop();

                pets.Peek().name();

                //队列 出队顺序与入队顺序相同

                Queue<Pet> queue =new Queue<Pet>();

                queue.Enqueue(new Dog("A"));

                queue.Enqueue(new Dog("B"));

                queue.Enqueue(new Dog("C"));

                Pet pet = null;

                pet = queue.Dequeue();

                pet.name();

                pet = queue.Dequeue();

                pet.name();

                pet = queue.Dequeue();

                pet.name();


    查看全部
    0 采集 收起 来源:集合(下)

    2019-05-07

  •             List<Dog> list = new List<Dog>();

                list.Add(new Dog("a"));

                list.Add(new Dog("b"));

                list.Add(new Dog("c"));

                list.RemoveAt(2);

                for(int i =0;i<list.Count;i++)

                {

                    list[i].a();

                }


    查看全部
    0 采集 收起 来源:集合(上)

    2019-05-06

  •         //约束范围 class,接口

            public void IsHappy<T>(T target) where T:Pet,ww

            {

                Console.WriteLine(target.ToString());

            }

                //调用

                Cat b = new Cat("66");

                Dog dog = new Dog("A");

                b.IsHappy<Dog>(dog);


    查看全部
    0 采集 收起 来源:约束

    2019-05-06

  • 装箱拆箱

    放入object和取出过程

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

    2019-05-06

  •     //对Cat类 进行扩展

        static class aaa

        {

            static public void ab(this Cat cat)

            {

                Console.WriteLine("13:");

            }       

        }

    //调用

     Cat b = new Cat("66");

     b.ab();

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

    2019-05-05

  • 相当于类,单更轻便    

    struct fish

        {

            int weight;

        }


    查看全部
    0 采集 收起 来源:结构和类

    2019-05-05

  • interface 定义接口

        有方法无实现   默认范围为public  不可在加

    abstract 定义抽象类

        可抽象方法与普通方法共存

    class Cat:Pet,com

    先写继承后写接口,单继承多实现

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

    2019-05-05

  •         //加sealed 子类不能再继承

            sealed override public  void d()

            {


            }


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

    2019-05-05

  • using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;


    namespace ConsoleApp2

    {

        abstract class Pet

        {

            protected string _Name;

            public Pet(string name)

            {

                _Name = name;

            }

            public void a()

            {

                Console.WriteLine("size:");

            }


            virtual public void b()

            {

                Console.WriteLine("fb:");

            }


             public void c()

            {

                Console.WriteLine(_Name);

            }


            abstract public void d();

        }

        class Cat:Pet

        {

            public Cat(string name) :base( name)

            {

            }

            new public void a()

            {

                Console.WriteLine("13:");

            }


            override public void b()

            {

                base.b();

            }


            override public  void d()

            {


            }

        }

        class Program

        {

            static void Main(string[] args)

            {

                //Console.Write("input:");

                //string a = Console.ReadLine();

                //Console.WriteLine(":" + a);

                ////得到字节长度

                //Console.WriteLine("size:" + sizeof(int));

                int[,] bb = new int[0,1];

                Cat b = new Cat("66");

                b.a();

                b.b();

                b.c();

                Console.ReadKey();

            }

        }

    }


    查看全部

举报

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

微信扫码,参与3人拼团

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

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