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

C#面向对象编程

kong66 全栈工程师
难度入门
时长 3小时17分
学习人数
综合评分9.47
105人评价 查看评价
9.7 内容实用
9.2 简洁易懂
9.5 逻辑清晰
  • 刚看第一遍的时候乱的很,反复看了三四次,耗费了三四个小时也不明白,后来自己不用泛型,使用普通类去实现相同功能,才明白泛型怎么用 和目的;老师的一些与之前不同的写法也增加了理解难度。比如不写Petcage<Dog> dog=new Petcage<Dog> ("名字");而用一个从来没见过的 var代替。 还有 return default<T>也没解释啥意思; 说下我的理解: 泛型就是在不确定类的 参数类型和返回类型时,设置一个变量来代替这个固定的类型。 当创建类实例时,在给这个变量赋对应类类型值,这样就可以实现一个类,输出不同类型的值和方法; 不用老师的例子,用一个给数组赋值输出数组的例子更好理解;比如设置一个类,构造函数初始化一个数组,数组类型为int,有给数组赋值方法和获取数组值的方法,在此注意:数组的类型int和获取数组值的方法的返回值类型都为int,如果实例此类调用方法,实参和返回值类型也必须是int;就此限定死了此类的实例; 如果想要一个设置char类型的实例,还得必须创建一个新的char的类和方法,才能实现;这样代码工作量就会很大;如果使用泛型,用变量<T>代替固定类型int或char,这样在实例化的时候,将T赋不同类型(int、double、char),这样就可以获得想要的返回值类型,从而实现了一个模板,只变一个参数T 就能实现相同的功能; 上面给出的例子。只需要把所有<T>去掉,后面的T全改为int或char 就能变为普通类了。对比理解非常简单了
    查看全部
    11 采集 收起 来源:泛型类

    2018-03-22

  • 这节课没看太懂

    查看全部
    6 采集 收起 来源:泛型接口

    2018-11-16

  • base()适用情况: ① 基类构造函数(无参),派生类构造函数(无参) public Pet(){ } public Dog():base(){ } ② 基类构造函数(无参),派生类构造函数(有参) public Pet(){ } public Dog(string name):base(){ } ③ 基类构造函数(有参),派生类构造函数(有参) public Pet(string name){ } public Dog(string name):base(name){ }
    查看全部
    4 采集 收起 来源:构造函数

    2017-12-04

  • 接口 1、接口就是制定一组函数成员,而不实现他们的引用类型,用interface声明。接口函数不能用其他访问修饰符修饰,默认为public。 2、接口用来被实现 例如Cat:ICatchMice{ //实现接口函数 } 3、一个类可以实现多个接口,当一个类同时继承基类和实现接口时,应该将基类写在最前面,用逗号隔开 4、一个类实现接口时,必须实现接口声明的函数。 5、可以通过接口引用调用接口中的方法,也可通过实例调用接口方法。例子 爬树为一个接口,抓老鼠为一个接口,当猫这个类实现这两个接口时, Cat c=new Cat("tom"); 爬树 ci=(爬树)c; c.pashu();//通过实例调用接口方法 ci.pashu();//通过接口引用调用接口方法
    查看全部
    4 采集 收起 来源:接口

    2018-03-22

  • 1、抽象方法 在方法声明前加abstract,抽象方法不能有实际的函数体,抽象方法必须在派生类中重写,才能调用。虚方法在派生类中可以不重写,调用时就是调用的是基类中的方法。 2、抽象类 一个类中含有抽象方法就是抽象类 抽象类中可以含有普通方法可以包含抽象成员、普通成员、抽象方法和普通方法 抽象类不能实例化 抽象类的存在只有一个目的就是被继承。 抽象类的抽象成员必须在派生类中用override关键字实现,否则不能实例化
    查看全部
  • 可以使用基类去引用指向派生类【如:Pet Dog = new Dog(),可以用宠物类去产生狗类,需要注意的是,调用的方法是引用的方法,即Pet】

    共性:通过统一的容器,我们可以方便去管理。(如:当需要修改货品金额时,可以在容器中进行修改)

    子类差异性:统一的行为中有所区别,也就是个性


    【虚方法】是方法定义

    作用:虚方法,可以使得类既有共性的属性和方法,也可以在运用时,体现出派生类的个性

    用法:声明为“virtual”的。基类的虚方法,可以在派生类中使用override重写

    【多态】是一种过程

    作用:可以通过基类引用,调用虚函数,会指向派生类,调用派生类里面的同名函数,就叫多态

    【数组定义】引用名[] 数组名 = new 类名[]{new 类名(),new 类名()};

                        Pet[] pets = new Pet[]{new Dog(),new Cat()};

    【虚方法的知识点】

    *重写虚方法,必须有相同的可访问性,且基类方法不能是私有的(private)

    *不能重写静态(static)方法或者非虚方法

    *方法、属性、索引器、事件,都可以用虚方法定义(既用virtual或override声明)


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

    2018-11-13

  • 要明白object是所有对象的基类,工作中多用继承,把基类的代码拿来,把基类的函数改写,用声明基类指向不同的派生类,放到集合中管理,把对象池化。 继承的专有名词:父类和子类,基类和派生类。 派生类默认拥有基类的所有属性和方法,派生类不用从头开始,节省创建新类的工作量。在c#中object是始祖类,只有object没有基类,明确基类的对象都默认集成object。所以代码中可用 object指向任何对象。 c#中只能有一个直接基类。 多态表现为: 1-通过构造函数的不同入参实例化各种的对象。 2-通过overwrite来重写基类方法的实现过程多态。 3-通过增加属性和方法实现多态最常用的方式。 4-通过写一个与积累同名的函数覆盖基类方法。 对象池化管理: 1-声明基类指向不同的派生类,因为派生类用了overwrite重写了基类的函数,所以集合中的对象函数实现代码不同。 2-通过类的构造函数入参不同实例化不同特征的对象,池化管理,这种方法常用。
    查看全部
    3 采集 收起 来源:继承

    2017-09-23

  • 面向对象的编程思想是一切皆对象,对象具有属性(特征)和行为(函数)。 1.面向对象封装了对象实现的细节,方便多人协作,使用时只需关心公开的属性和函数就行; 2.通过继承可以在基类的基础上实现对象,不用从头编写代码,节省工作量; 3.多态能够改写和增加基类的函数和属性,并且不同的派生类可以作为一个集合进行统一管理。大大增强了程序的扩展性和可管理性。
    查看全部
    3 采集 收起 来源:课程介绍

    2017-09-23

  • 1、什么是重载运算符 不能创造新的运算符,所以利用现有的某种运算符,针对自定义类或者结构(预定义类型和现有运算符的运算含义是确定的所有不能更改),定义某种运算符(该运算符和该操作具有一定相关性,如公狗狗+母狗狗=新生狗狗),从而简化自定义类型的操作。 2、语法细节 public static Dog operator +(Dog male,Dog female)//如公狗狗+母狗狗=新生狗狗 { ··· } 3、那些运算符可以重载 一元运算符:+、-、!、~、++、- -、true、false(操作数必须是类和结构) 二元运算符:+、-、*、%、&、|!、^、<<、>>、= =、!=、>、<、>=、<=(两个操作数至少有一个表示类或者结构) 不能重载:=、&&、||、[](索引操作)、()等 4、重载运算符不能做什么 创造新运算符 改变运算符语法 重定义运算符如何处理预定义类型 改变运算符的优先级和结合性 5、重在运算符举例 ··· public void ShowAge() { Console.WriteLine("Age="+_age); } ··· //重载自增操作,针对宠物的年龄 public static Pet opertor ++(Pet pet)//返回值为Pet类型,参数为宠物自身。所有的重载方法都需要public static修饰 { ++pet._age; return pet; } ··· Dog dog=new Dog("Jack"); dog._age=2; dog++; dog.ShowAge();
    查看全部
    3 采集 收起 来源:重载运算符

    2018-03-22

  • 1、字典Dictionary<TKey,Tvalue> 字典容器存储的是一系列的键值对,没个值对应一个唯一的键。键的意义在于,我们可以通过键相对高效的访问到值。 2、字典操作 数量 Count 添加 Add(key,value) 删除 Remove 访问 [key] 3、栈 出栈 Pop 入栈 Push 获取栈顶元素 Peek 4、队列 先进先出容器。 出队 Dequeue 入队 Enqueue,有返回值
    查看全部
    3 采集 收起 来源:集合(下)

    2018-03-22

  • namespace projGetMaxScore { public class Pet:Object//默认继承Object,可以省略不写 { public Pet(string name) { _name = name; } protected string _name;//保护的,派生类才能访问 virtual public void Printname() { Console.WriteLine("Pet's name is "+ _name); } } public class Dog:Pet{ public Dog(string name):base(name)//引用基类默认值 { } } public class Cat:Pet { public Cat(string name):base(name) { } override public void Printname()//隐藏继承方法 { Console.WriteLine("宠物的名字是 "+ _name); } } class Program { static void Main(string[] args) { Pet[] pets=new Pet[]{new Dog("jack"),new Cat("tom")}; for(int i=0;i<pets.Length;i++) pets[i].Printname(); } } }
    查看全部
    3 采集 收起 来源:构造函数

    2018-03-22

  • 委托与继承相似,都是复用代码,继承是类级别的复用,委托是方法级别的复用。

    委托声明方式

    delegate 返回值类型 方法名();

    可以保存一些列方法;

    调用方式从声明中的变量获得,例如del();

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

    2019-06-23

  • 面向对象编程
     特点:封装  继承  多态
     优点:易维护 易扩展 易开发
     继承语法:
         class ChildClass:ParentClass
             {
             .......
             }
       特殊的基类:
           object类是所有的共同基类,它是唯一的非派生类,是继承层次结构的基础。
           继承只能单继承;


    查看全部
    2 采集 收起 来源:继承

    2018-12-13

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

    2018-03-08

  • public string name; public void PrintName();
    查看全部
    2 采集 收起 来源:继承

    2017-10-20

首页上一页1234567下一页尾页

举报

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

微信扫码,参与3人拼团

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

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