第8章 面向对象编程简介

面向对象编程简介
面向对象编程(Object-Oriented Programming)


8.1 面向对象编程的含义
使用OOP技术,常常要使用很多代码模块,每个模块都提供特定的功能,每个模块都是孤立的。
OOP技术要使用对象


8.1.1 对象的含义
对象非常类似于本书前面讨论的结构类型
建模语言(Unified Modeling Language)UML研究类和对象
顶部:类名(对象名)
第二部分:属性和字段(+表示公有,-表示私有)
第三部分:方法
如:
CupOfCoffee
------------------------------
+BeanType:string
+Instant:bool
+Milk:bool
+Sugar:byte
+Description:string
------------------------------
+AddSugar(in amount:byte):byte


PS:类的静态成员带有下划线


1. 属性和字段
属性:面向对象,定义get和set
字段:类的内部使用
可以通过使用属性和字段访问对象中包含的数据。这个对象数据可以用于区分不同的对象,因为同一个类的不同对象在属性和字段中存储了不同的值。


8.1.2 一切皆对象
C#和.NET Framework中所有东西都是对象。
点字符串把对象实例名和属性或方法分隔开来,方法后面的()把方法和属性区分开来


8.1.3 对象的生命周期
构造阶段:第一次实例化对象时,需要初始化该对象。这个过程称为构造阶段,由构造函数完成。
析构阶段:在删除一个对象时,常常需要执行一些清理工作,例如,释放内存,有析构函数完成


1.构造函数
用于初始化数据的函数,所有的类定义都至少包含一个构造函数


8.1.4 静态和实例类成员
使用静态成员时,不用实例化对象
静态类智能包含静态成员


8.2 OOP技术
8.2.1接口
接口是把公共实例(非静态)方法和属性组合起来,以封装特定功能的一个集合。一个类可以实现多个接口
接口不能实例化,不能包含其他成员的代码,实现过程必须在接口中的类完成。接口的命名一般以I开头
在UML中,接口用棒棒糖来表示
如---0 IHotDrink


可删除对象
IDisposable可删除对象,必须实现Dispose()方法
using(删除对象变量)
{
//code...
}


8.2.2继承
任何类都可以从另一个类中继承
猫和狗都继承于动物类,在uml中用箭头表示继承
protected:只有继承了这个类才可以使用这个成员


抽象类:是对类一个抽象,在uml中用斜体表示
所有对象都有一个基类object


8.2.3 多态性
继承的一个结果是派生于基类的类在方法和属性上有一定的重叠,因此,可以使用相同的语法处理同一个基类实例化的对象。


接口多态性
有点像js里的,属性用构造函数定义,方法用原型定义,即,方法用接口实现,即使不一样的类都可以使用。


8.2.4 对象之间的关系
包含关系:一个类包含另一个类。这类似于继承关系,但包含类可以控制对被包含类的成员的访问,甚至在使用被包含类的成员前进行其他处理
集合关系:一个类作用另一个类的多个实例的容器。这类似于对象数组,但集合具有其他功能,包含索引、排序、和重新设置大小等。


8.2.5 运算符重载
详见13章


8.2.6 事件
详见13章


8.2.7 引用类型和值类型
值类型总是包含一个值,而引用类型可以是null
值类型:int、结构、枚举
引用类型:object、string、数组


习题知识点
1.OOP中有真实级别的可访问性:public、private、protected


2."必须手动调用对象的析构函数,否则就会浪费内存"的说法正确吗?
答:错误,永远都不用手工调用对象的析构函数,.NET运行库环境会在垃圾回收过程中自动完成该任务。但是,如果想要在A释放时,在B中记录A对象的数量之类,
可以在A类的析构函数更新A在B中的数量。


3在调用类的静态方法时,需要创建该类的对象吗?
不需要


5.假设有一个基类:HotDrink,有方法AddMilk()和Drink(),又有一个接口ICup,有一个Wash()的方法
然后有一个类继承了HotDrink和ICup
static void ManipulateDrink(HotDrink drink)
{
drink.AddMilk();//从基类继承而来
drink.Drink();//从基类继承而来
if(drink is ICup)
{
ICup cupInterfase=drink as ICup;//声明接口
cupInterfase.Wash();//调用接口方法
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值