---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ---------------------
面向对象是一种程序的设计方法,其基本思想是使用对象、类、继承、封装、抽象、消息等基本概念来进行程序设计。
面向对象从现实世界中客观存在的事物(即对象)出发来设计软件系统,并在设计时尽可能的运用人类的思维方式。强调直接以问题范围中的事物为中心来思考问题、认识问题,并根据这些问题以及事物的本质贴点,来抽象的表示为系统中的对象,作为系统中的基本构成单位。
比如这个世界上有人,人可以有衣食住行等动作,衣食住行又关系到其他一些东西:衣服、大米、房屋、汽车等,就可以在人这个事物身上构造与衣服、大米等关联的方法,是吃饭呢,还是穿衣服。而人自己本身又有年龄,姓名等属性,在房屋的属性里边又可以关联人这给类,以表示房屋属于哪个人,这个人叫什么。大量的这些简单的事物与事物之间的关系就构成了复杂的世界。
面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:系统中一切都是对象,对象是类的实例;实例关系和继承关系是对象之间的静态关系,消息传递是对象之间动态联系的唯一方式,消息的载体就是方法。
面向对象的编程语言4个主要的特征:封装、抽象、继承、多态等
1、封装
面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个“模块”中,也就是一个类中,属性用成员变量定义,行为用方法定义,方法可以直接访问对象中的属性。只要记住将所有成员变量定义成私有的,然后想要访问这些成员变量就只能是类内部的方法,这样就实现了封装,有两个经典的例子:
画圆和刹火车
画圆需要的是圆心和半径,圆心和半径属于圆的属性,如果都是私有的话,就只有圆内部方法可以调用圆心和半径,所以画圆的方法应该定义给圆这个类,而人画圆只是人给圆传递了一个画圆的命令。
刹火车一样,刹车用到的是制动力,制动力是属于火车的属性,刹车就是火车的行为了,人只是传递一个刹车的信息
2、抽象
抽象就是找出一些事物的共性,然后将这些事物定义为一个具有这些共性的类,忽略掉每个事物本身的特性。比方说人这个事物,都有年龄、姓名、身高、吃饭等属性
那就定义一个人的类
class Person{ String name; int age; double heigh; public void eat(){ 吃点什么; } }
当只用到这些属性时,就不用考虑人又黑白男女之分了。这就是抽象,忽略掉特性,抽取共性。
3、继承
还用上面人来说明,当我们需要对男人来进行“操作”时,我们必须要描述男人是个人什么东西,有些什么方法,毫无疑问,男人也是人,也有姓名、年龄、身高等属性,所以我们不需要重新定义男人这个类,而是直接继承人这个类,并且另外定义男人的一些特有属性和行为就可以了,这就叫做继承。
4、多态
继续拿人说明,多态的基础是继承,男人继承了人,女人也继承了人,男人的吃饭方法和女人的吃饭方法可能是不一样的比如
class ManPerson extends Person{ public void eat(){ 胡吃海喝; } } class WomanPerson extends Person{ public void eat(){ 细吞慢咽; }
}
男人女人都继承了来自人的吃的这个方法,然后又下面一段代码
Person p1 = new ManPerson();
p1.eat();
Person p2 = new WomanPerson;
p2.eat();
这段断码第一个人是吃点什么还是胡吃海喝?答案是胡吃海喝,第二个人就是细吞慢咽了这就是多态的作用了,通过父类引用可以调用子类方法。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
相关推荐
黑马程序员 - Java基础教学 - 05 - 面向对象(1).doc
黑马程序员 - Java基础教学 - 08 - 面向对象(4)-多态.doc
黑马程序员 - 毕向东 - Java基础教学 - 第01天 个人观看视频总结文档
黑马程序员 - 毕向东 - Java基础教学 - 第02天 个人观看视频总结文档
黑马程序员 - Java基础教学 - 04 - 数组、进制转换、二维数组
黑马程序员 - Java基础教学 - 06 - 面向对象(2) - 关于静态static的那些事.doc
day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda...Java基础小节练习题答案
黑马程序员-java32期培训视频(基础+就业)黑马程序员-java32期培训视频(基础+就业)
黑马程序员 - Java基础教学 - 03 - 变量的作用域、for循环、break、continue、内存结构
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
黑马程序员-SpringCloud-学习笔记01-认识微服务
黑马QT讲义,适合QT入门,使用,教程很比较基础,新手可以看看,另外视频链接在哔哩哔哩中。
黑马程序员--毕向东全套Java视屏,讲解的相当全面,各位如果需要,尽快下载哦! 另外如果视频链接存在打不开的问题,请留言,必定及时更新链接。
行时所需要的基本条件和许多 Java 基础类,例如,IO 类、GUI 控件类、网络类等。JRE 是提供给 普通用户使用的,如果你只想运行别人开发好的 Java 程序,那么,你的计算机上必须且只需安装 JRE。 JDK(Java ...
黑马程序员-SpringCloud-学习笔记-02-微服务拆分及远程调用
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490901
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490903
黑马程序员-梅兰商城项目实战,包含图片素材和编写源码。
C++黑马程序员-演讲比赛流程管理系统记录
NULL 博文链接:https://huangminwen.iteye.com/blog/1157983