面向对象的编程学习笔记
2018-06-23 23:32:04来源:未知 阅读 ()
面向对象的编程区别于面向过程的编程,其操作的单元是类,而面向过程操作的单元是方法。即面向过程的编程是由一个又一个的方法组成的。而面向对象的编程是由一个又一个类组成的。相对于面向过程,面向对象的代码复用性更好,代码的隐蔽性更高,并且更加符合人类思维的方式。
面向对象的最基础的单元就是类。类(Class)是一个抽象的概念,是对某一类事物的描述。例如:猫,狗,人。而对象(object)就是类的实例化。即符合类描述的具体的单个成员。例如我就是Person类实例化的对象。我是符合人描述的具体的单个成员。在创造对象的过程就叫做类的实例化。
类包含描述某种事物的状态(例如姓名,性别)和行为(唱歌,跳舞,写代码)。
在.net平台而言,最基本的编程结构就是类类型。正式的说,类是由字段数据(通常叫做成员变量)以及操作这个数据的成员(如构造函数,属性,方法,事件等)所构成的自定义类型。其中字段数据表示状态。
Class Person { //表示自身状态的字段 String Name; String Sex; //表示行为的方法 Public void Sing(); Public void Dance(); Public void Coding(); }
面向对象编程(OOP)的三个特性:
1.封装性
封装是将对象用户(用你编写的类进行编程的人)不必了解的实现细节隐藏起来的一种语言能力。
1 //DatabaseReader封装了数据库操作的细节 2 DatabaseReader dbReader = new DatabaseReader(); 3 dbReader.Open(@"C:\AutoLot.mdb");
和封装编程逻辑紧密相关的概念就是数据的保护概念。理想情况下对象的状态数据都应该是隐蔽的,外部不能直接的访问,只能通过访问函数来进行“有礼貌的访问”。
2.继承性
继承指的是基于已有的类型来创建心类的语言能力。通过继承,子类可以继承基类(或称父类)的核心功能,并且扩展了基类的行为。
从图中我们可以看出“矩形是图形,图形是对象”这就构建成了一种“is - a”的关系,Is- a关系又称为继承关系。
我们会认为Shape定义了许多派生类都公有的成员(颜色,高度)。由于Rectangle扩展了Shape,它也就继承了由Shape和Object定义的核心功能。同时它还有属于自己独特的功能。
区别于C++,C#不支持多重继承的概念(所以引入了接口的概念)继承的一个很大的优点就是提高了代码的复用性,OOP中还有另外的一种形式的代码重用:包含/委托模型(has-a关系,也成聚合)这种重用的形式不是用来建立父类和子类关系的。它意味着,一个类可以定义另一个类的成员变量,并向对象用户间接的公开它的功能。
例如构建一个汽车(Car)的类,想表达一辆车中有一个(has-a)收音机的概念。让Car继承Radio类显然是不符合逻辑的。需要的是两个类一起合作,其中Car类创建并公开了Radio的功能。
1 Class Car 2 { 3 Radio _Radio; 4 } 5 Class Radic 6 { 7 8 }
3.多态性
同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。
实际上就是同一个类型的实例调用“相同”的方法,产生的结果是不同的。这里的“相同”打上双引号是因为这里的相同的方法仅仅是看上去相同的方法,实际上它们调用的方法是不同的。
当CirCle和Rectangle都调用Draw()的时候,看似这两个实例调用了“相同”的方法,但是实际上,它们是调用各自的Draw()方法。所以只是看似相同,实际上是不同的方法。并且产生了不同的执行结果,这就是多态性。
同时,这里讲的多态性也只是简单的多态性。多态性用来当基类规定好一些实现的方法时,子类只需要重写这些方法就好。这样增强了代码的复用性。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 对于前端编程,靠自学是真的可以的吗? 2020-05-25
- Bootstrap 滚动监听+小工具+Flex(弹性)布局+多媒体对象 2020-04-20
- 1.Android网络编程-HTML介绍 2020-02-07
- 随机点名 2019-12-09
- [书籍翻译] 《JavaScript并发编程》第四章 使用Generators实 2019-10-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash