博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#学习速记_面向对象编程简介
阅读量:6035 次
发布时间:2019-06-20

本文共 1843 字,大约阅读时间需要 6 分钟。

hot3.png

面向对象编程的含义

  • 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 方法,回收资源
= new
();...using (
){ ...}using (
= new
()){ ...}

继承

  • 任何类都可以从另一个类继承
  • 被继承的类称为父类或基类
  • 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

你可能感兴趣的文章
[编解码] 关于base64编码的原理及实现
查看>>
WinDbg配置和使用基础
查看>>
转:Object-Runtime的基本数据类型
查看>>
JMJS系统总结系列----Jquery分页扩展库(五)
查看>>
Excel技巧之——英文大小写转换(转)
查看>>
Google 翻译的妙用
查看>>
算法导论--python--插入排序
查看>>
Hydra用户手册
查看>>
常用的集合
查看>>
Unity3D工程源码目录
查看>>
杀死进程命令
查看>>
cookie 和session 的区别详解
查看>>
浮点数网络传输
查看>>
Mongodb对集合(表)和数据的CRUD操作
查看>>
面向对象类的解析
查看>>
tomcat如何修改发布目录
查看>>
CentOS 5.5 使用 EPEL 和 RPMForge 软件库
查看>>
Damien Katz弃Apache CouchDB,继以Couchbase Server
查看>>
Target runtime Apache Tomcat is not defined.错误解决方法
查看>>
某机字长为32位,存储容量为64MB,若按字节编址.它的寻址范围是多少?
查看>>