类和对象的概念(转载)
2009-01-08 15:32
134 查看
/article/4891363.html
类(Class)
面向对象思想来源于对现实世界的认知。现实世界缤纷复杂、种类繁多,难于认识和理解。但是聪明的人们学会了把这些错综复杂的事物进行分类,从而使世界变得井井有条。比如我们由各式各样的汽车抽象出汽车的概念,由形形色色的猫抽象出猫的概念,由五彩斑斓的鲜花抽象出花的概念等。汽车、猫、鲜花都代表着一类事物。每一类事物都有特定的状态,比如汽车的品牌、时速、马力、耗油量、座椅数,小猫的年龄、体重、毛色,鲜花的颜色、花瓣形状、花瓣数目,都是在描述事物的状态。每类事物也都有一定的行为,比如汽车启动、行驶、加速、减速、刹车、停车,猫捉老鼠,鲜花盛开。这些不同的状态和行为将各类事物区分开来。面向对象编程也采用了类的概念,把事物编写成一个个“类”。在类中,用数据表示事物的状态,用函数实现事物的行为,这样就使编程方式和人的思维方式保持一致,极大的降低了思维难度。封装(Encapsulation)
制造汽车的过程中什么人最牛?当然不是焊钢板的,也不是装轮胎的,更不是拧螺丝的,而是设计汽车的工程师,因为他知道汽车的运行原理。但是我们开车时,需要知道汽车的运行原理吗?答案显然不需要。汽车的运行原理已经被伟大的工程师封装在汽车内部,提供给司机的只是一个简单的使用接口,司机操纵方向盘和各种按钮就可以灵活自如的开动汽车了。与制造汽车相似,面向对象技术把事物的状态和行为的实现细节封装在类中,形成一个可以重复使用的“零件”。类一旦被设计好,就可以像工业零件一样,被成千上万的对其内部原理毫不知情的程序员使用。类的设计者相当于汽车工程师,类的使用者相当于司机。这样程序员就可以充份利用他人已经编写好的“零件”,而将主要精力集中在自己的专署领域。接口(Interface)
今天你买了一台等离子电视机,你拿出遥控器,操纵按钮,开始欣赏精彩的电视节目。人们通过遥控器这个接口使用电视机,同样,人们通过类的接口使用类。程序员在编写类时精心地为它设计接口,而设计良好的接口不但方便其他程序员使用,还有利于类的升级改造。假设你是一个环保人士,最近你用节能的荧光灯代替了普通的白炽灯。白炽灯通过加热电阻丝照亮整个屋子;荧光灯则是激活空气中的某些分子的电子能而发光。虽然它们的原理不同,但是它们的功能却是一样的——照明。因为两种灯具有相同的接口,所以你只需拧下白炽灯,然后再拧上荧光灯即可,轻易的实现“零件”的更新换代。同样,在面向对象编程中,只要保持接口不变,你可以任意更改类的实现细节,用一个设计更好的类替换原来的类,实现类的升级换代。现在软件维护和修改的成本已经占到了整个软件开发的80%,类的这一编成思想极大的方便了程序的维护和修改,降低了软件成本。对象(Object)
作为初学者,比较容易混淆类和对象的概念。类是一个抽象的概念,对象则是类的具体实例。比如人是一个类,司马迁、李白、杜甫都是对象;首都是一个类,则北京、伦敦、华盛顿、莫斯科都是对象;动画猫是一个类,则Kitty、Grafield和Doraemon都是对象类是抽象的概念,对象是真实的个体。我们可以说Kitty猫的体重是1.5kg,而不能说猫类的体重是1.5kg;可以说刘翔在跨栏比赛中夺冠,而不说人类在跨栏比赛中夺冠。一般情况下我们认为状态是描述具体对象而非描述类的,行为是由具体对象发出的而非类发出的。现实生活中到处充实着对象,一栋房子、一辆汽车,一头大象,一只蚂蚁,乃至一种语言、一种方法都可以称为对象。相关文章推荐
- JAVA基础——对象与引用概念(转载)
- 转载:gc的概念,如果A和B对象循环引用,是否可以被GC?
- 由java ==和equals区别引出的对象以及对象的引用等相关概念。转载
- JAVA基础——对象与引用概念(转载)
- [转载]测试驱动开发之模拟对象(概念篇)
- [转载]测试驱动开发之模拟对象(概念篇)
- Java学习笔记之 面向对象基本概念
- 面向对象的基本概念
- .NET对象与Windows句柄(一):句柄的基本概念
- 数据抽象、面向对象程序设计基本概念
- JAVA的StringBuffer类(转载整理)____非常重要的一个类,线程安全,不用每次创建一个对象,以及和String的区别
- [转载]从零开始学习OpenGL ES之一 – 基本概念
- c++基础学习6-c++面向对象基本概念
- 【转载】8天入门wpf—— 第一天 基础概念介绍
- 让您对js的 function, javascript内置对象,this概念及之间的关系不再迷惑
- javascript初学者:全面学习对象概念
- Git 系列之一:版本控制的概念、分布式、Git 简介及其工作流程-转载
- javascript--DOM对象模型的常用操作属性和方法(转载)
- O-C相关-03:面向对象概念的具体介绍
- OC学习篇之---数组对象的引用计数问题和自动释放池的概念