C#高级(一)面向对象

对于面向对象,有N多大师写过N多文字。我也不敢妄言。就简单说说自己的认识。

我们先来看看“对象”,什么是对象?我们在现实生活中所能看到的一切都可以称为对象 。比如,企业、医院、宠物、植物、人。。。等等。在面向对象编程中,对象往往被当作一个类,类有属 性和行为。我们以医院为例来说,医院有医生,有护士等,在医院可以做CT,B超等。在面向对象编程中 ,我们定义一个hospital 类,其有属性(医生,护士)和行为(做CT,做B超)。这就是一个简单的面向 对象编程。

其实,我们不光可以把医院做为一个类,我们还可以把医生做为一个类,医生有其属性(年龄,姓名 ,性别等)和其行为(检查病人,开处方,做手术等)。甚至我们可以把儿科医生定义为一个类,同样, 骨科,外科,内科等医生,我们都可以分别定义为一个类,但这些类都具有同样的属性(年龄,姓名,性 别等)甚至行为,难道每个类我们都要依次定义这些属性吗?答案是否定的。

我们可以定义一个医生类,定义这些共有属性和行为。儿科医生,骨科医生等都继承自这个医生类, 这样就具有了医生类的所有属性和行为。这在面向对象编程中被称为继承。

我们再来看一个例子。

人,有白人,黑人,黄种人等。人有年龄,性别,会吃饭。狗有白毛的狗,有黑色的狗等,狗有年龄 ,性别,会吃饭,咬人。

在这种情况下,我们可以把人定义为一个基类(有属性 年龄,性别和行为吃饭等),黑人,白人,黄 种人都继承自“人”这个类。我们再“狗”定义为一个类(有属性 年龄,性别和 行为吃饭,咬人等),白狗,黑狗都继承于这个“狗”类。

在这里,我们可以看到,狗所具有的一些属性在“人”这个类里面已经具有了,我们没有 必要重新在“狗”类中定义的,“狗”类中只需要定义其独特的行为或属性,比如 :咬人。而黑狗,白狗等继承自“人”和“狗”这两个类。这样就不存在重复定义 的问题了。

但在C#和Java中都不支持多重继承。那怎么办呢?这时候就诞生了一个“接口”的概念。 一个类可以实现多个接口。在上例中,可以定义一个“动物”的接口(人也是一种动物嘛), 在接口中定义人和狗共有的年龄,性别,吃饭等属性和行为。再定义一个“人”这样的基类, 并实现这个接口,然后白人,黑人等类再继承“人”这个基类就可以了。狗也同理。

呵呵。就简单的介绍这么些吧。可能说的不清楚,大家去google一下,有很多介绍面向对象的文字。

时间: 2024-09-28 20:06:10

C#高级(一)面向对象的相关文章

《面向对象的思考过程(原书第4版)》一 第3章 高级的面向对象概念

本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第3章,第3.1节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问"华章计算机"公众号查看. 第3章 高级的面向对象概念 第1章和第2章讲述了面向对象的基本概念.在开始学习关于构建面向对象系统的一些具体设计问题之前,我们需要更进一步了解面向对象的一些概念,比如构造函数.操作符重载以及多重继承.我们也会讲述错误处理技术以及面向对象的设计中作用域的重要性.其中一些概念可能

JavaScript面向对象编程入门教程_基础知识

尽管面向对象JavaScript与其他语言相比之下存在差异,并由此引发了一些争论,但毋庸置疑,JavaScript具有强大的面向对象编程能力 本文先从介绍面向对象编程开始,然后回顾JavaScript对象模型,最后演示JavaScript中的面向对象编程概念. JavaScript回顾 如果你对诸如变量(variables).类型(types).函数(functions).以及作用域(scope)等JavaScript概念觉得心里没底,那么你可以阅读重新介绍JavaScript中的这些主题.你还

PHP对象、模式与实践之高级特性分析_php技巧

本文实例讲述了PHP面向对象程序设计高级特性.分享给大家供大家参考,具体如下: 高级特性 包括: 1.静态方法和属性(通过类而不是对象来访问数据和功能) 2.抽象类和接口(设计,实现分离) 3.错误处理(异常) 4.Final类和方法(限制继承) 5.拦截器(自动委托) 6.析构方法(对象销毁前的清理工作) 7.克隆对象(创建对象的副本) 8.把对象解析成字符串 PS,学会从内存的角度看代码.想象计算机的微观世界. 静态方法的小例子 <?php class StaticExample{ stat

《面向对象的思考过程(原书第4版)》一 导读

本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第3章,第3.2节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问"华章计算机"公众号查看. 前 言本书内容概要正如书名所述,本书讲述了面向对象思考的过程.选择一本书的主题和书名是个很重要的决定,但如果主题概念性很强,决定就没那么容易了.大部分书籍都只涉及了编程及面向对象设计的某个方面.一些主流的书阐述了诸如面向对象分析.面向对象设计.面向对象编程.设计模式.面向对象

FireFox插件FirePHP调试PHP

作者:Louis Simoneau原文链接:http://www.sitepoint.com/blogs/2010/02/09/debug-php-firebug-firephp 译者:alswl 如果你和我一样,你会在开发网页项目时候完全无法离开FireBug.这个小巧的"臭虫"是一个神奇而有用的HTML/CSS/JavaScript/Ajax调试器.但是你也许不知道这个还可以用来调试PHP,没错,它可以,感谢一款名为FirePHP的FireFox插件. 通过一个小小的服务端库,和这

如何使用FireFox插件FirePHP调试PHP

使用这个工具,首先你需要安装FirePHP插件.这个插件需要你已经安装FireBug.装好FirePHP之后,重新打开Firebug面板时候,你会看到新加了一个蓝色的臭虫图标.点击这个图标会出现一个开启或者关闭FirePHP的菜单   如果你和我一样,你会在开发网页项目时候完全无法离开FireBug.这个小巧的"臭虫"是一个神奇而有用的HTML/CSS/JavaScript/Ajax调试器.但是你也许不知道这个还可以用来调试PHP,没错,它可以,感谢一款名为FirePHP的FireFo

Processing编程学习指南导读

前 言 Learning Processing:A Beginner抯 Guide to Programming Images, Animation, and Interaction, Second Edition 本书讲的是什么 本书讲了一个故事.一个关于解放与自由的故事,一个关于逐步了解计算机基础知识的故事.通过编写代码,可以创造属于你自己的多媒体设计,而不必拘泥于已有的软件工具.这个故事不仅仅是为科学家和工程师准备的,同时也是为你准备的. 本书是为谁准备的 本书是为初学者准备的.如果你到目

《测试驱动数据库开发》目录—导读

版权声明 测试驱动数据库开发 Authorized translation from the English language edition, entitled Test-Driven Database Development: Unlocking Agility, 9780321784124 by Max Guernsey, III, published by Pearson Education, Inc., publishing as Addison-Wesley, Copyright 2

JavaEE

  Java技术不仅是一门编程语言而且是一个平台.同时Java语言是一门有着特定语法和风格的高级的面向对象的语言,Java平台是Java语言编写的特定应用程序运行的环境.Java平台有很多种,很多的Java工程师,即使是干了很长时间的工程师也不是很理解不同平台之间的区别和关联是什么.Java编程语言一共有四个官方的平台: ■ Java Platform, Standard Edition (Java SE) ■ Java Platform, Enterprise Edition (Java EE

Python vs Ruby: 谁是最好的 web 开发语言?

Python 和 Ruby 都是目前用来开发 websites.web-based apps 和 web services 的流行编程语言之一. 这两种语言在许多方面有相似之处.它们都是高级的面向对象的编程语言,都是交互式脚本语言.都提供标准库且支持持久化.但是,Python 和 Ruby 的解决方法却千差万别,因为它们的发展历程导致它们的语法和原理都大不相同. 那么要采用哪种语言来进行编程就需要好好考虑了,因为每种语言都是自己的优点和缺点.而且这些优缺点都会影响我们的决定. 基础知识 Pyth