C#学习速记_面向对象编程简介

面向对象编程的含义

  • OOP技术以结构、数据的含义以及数据和数据之间的交互操作为基础
  • 类是用于实例化对象的类型定义

对象的含义

属性和字段

属性是提供数据限制访问功能的字段

方法

对象中的函数

  • 可以是公有,也可以是私有

一切且对象

C# 与 .NET Framework 中的所有东西都是对象

对象的生命周期

构造阶段

  • 第一次实例化对象
  • 使用构造函数实现
  • 每个类至少包含一个构造函数,构造函数名与类名相同
  • 可以有多个不同参数的构造函数,但只有一个没参数的默认构造函数
  • 使用 new 来调用构造函数
  • 可以用 public 与 priate 修辞,但只 public 可以在外部访问实例化对象

CupOfCoffee myCup = new CupOfCoffee(); // 默认构造函数

CupOfCoffee myCup = new CupOfCoffee("Blue Mountian");

析构阶段

  • 对象删除
  • 使用析构函数实现
  • 可以不定义,而使用默认析构函数

静态成员和实例类成员

  • 静态方法、静态属性、静态字段
  • 静态成员可以在类的实例之间共享
  • 使用静态成员时,甚至不需要实例化对象

静态构造函数

  • 一个类只有一个
  • 不能直接调用
  • 不能有访问修饰符,也不能带参数
  • 无论创建多少类实例,其静态构造函数都只调用一次
  • 调用时机:(1)创建包含静态构造函数的类实例时;(2)访问包含静态构造函数的类的静态成员时。

静态类

  • 只能包含静态成员
  • 不能实例化

OOP技术

接口

  • 在类上关现公共属性和方法的集体
  • 只包含方法和属性的定义
  • 不能单独存在
  • 不能实例化,由类实现接口后才能实例化
  • 不能包含成员代码
  • 一般以 大写字母 I 可头来定义接口的名字
  • 一个类可能支持多个接口,多个类也可以支持相同的接口
  • 接口发布后,最好不要修改。应创建新接口来扩展旧接口,包含版本号

可删除的对象

  • 实现IDisposable接口的对象,必须实现 Dispose() 方法
  • 对象不再使用时,系统会自动回收资源

// using 代码块执行结束后,会自动触发 Dispose 方法,回收资源

<ClassName> <VariableName> = new <ClassName>();

...

using (<VariableName>)
{
    ...
}

using (<ClassName> <VariableName> = new <ClassName>())
{
    ...
}

继承

  • 任何类都可以从另一个类继承
  • 被继承的类称为父类或基类
  • C# 对象只支持直接派生于一个基类
  • 派生类不能访问基类的私有成员 private,但可以访问公有成员 public
  • protected 可由派生类访问,而不能由外部代码访问
  • 派生类可重写基类的成员,基类原生成员仍然存在,也可以调用
  • 基类可以为抽象类,但派生类必须实现抽象类的所有成员
  • C# 所有类都有一个共同的基类 object (System.Object的别名)
  • 接口也可以继承自其他接口,并且支持多个

多态性

  • 从一个派生类实例化的所有对象都可以看成其父类的实例

接口的多态性

  • 可定义接口类型的变量,然后可以支持该接口的对象上,使用这个变量访问该接口提供的方法与属性

Cow myCow = new Cow();
Chicken myChicken = new Chicken();

IConsume consumeInterface;

consumeInterface = myCow;
consumeInterface.EatFood();

consumeInterface = myChicken;
consumeInterface.EatFood();

  • 派生类会继承基类的接口
  • 有共同基类的类不一定有共同接口,反之亦然

对象之间的关系

对象可包含其他对象,也可以表示其他对象的集合

包含关系

集合关系

运算符重载

  • 要在表达式中处理对象,常常需要通过运算符重载,定义运算符如何处理对象
  • 只能重载C#运算符,而不能创建新的运算符

事件

  • 对象可以提供事件,事件因某种内部处理而被触发

引用类型和值类型

  • 值类型在内存的同一处存储它们自己和它们的内容
  • 引用类型存储指向内存中其他某个位置的引用
  • 值类型总是包含一个值,引用类型可以是 null
  • 但可使用可空类型创建值类型

桌面应用程序中的OOP

转载于:https://my.oschina.net/moyung2014/blog/1810644

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值