再次理解面向对象

来源:互联网 发布:商业地产数据分析 编辑:程序博客网 时间:2024/05/21 14:50

1.在java界流传着这样一句话,万事万物皆对象。但是往往还要避免频繁的创建对象,因为浪费资源。需要恰到好处才可以。spring容器可以管理bean的创建和销毁。

2.类的介绍

比如说,一个学生就是一个类,类是干嘛的呢?类描述的是一类事物所具有的共性内容。比如人类,动物类,车类。类是一些相关属性与行为的集合。学生有自己的年龄,性别,身高,学号等等,这些属性作为学生类的成员变量。行为就是方法功能,学生具有学习、吃饭、打游戏的功能。

3.类与对象的关系

类对事物的抽象的描述,对象是属于类的实例,实例就是实实在在的例子。比如一个学生对象就是一个学生类的具体实例,张三、李四就是具体存在的实例,它有自己的属性和行为。一个学生类可以有多个实例。

4.面向对象的三个基本特征

封装、继承、多态

①封装

何为封装?封装简单的说就是一个存储对象的容器,类是对属性和方法的封装。比如分页bean,封装了当前页的属性、每页显示最大记录数、总记录数等,还有struts中,模型驱动也是把前台传过来的值进行封装在model中。springmvc是把前台传过来的值封装在方法中的参数中,这也是封装。

父类中private修饰的成员变量,子类中不能直接使用。通俗的解释就是:你爸爸买了一部小车,你还不太会开,你爸爸把它声明它为private,没有你爸爸的允许你是不能使用的,因为车钥匙在你爸爸手中。至于你非要开车,那也是有办法的,那就是你可以偷出这把钥匙,这就相当也你把private变成的public可以使用了,这就是反射机制了。

父类protected修饰的成员变量,只有子类可以使用。通俗点就是你爸爸的财产只能给你,不能给别人家的孩子。


②继承

类只是用来描述单个事物的。但是类与类,也就是事物与事物之间也有关系,所以为了解决这个问题,出现了继承。父类中有的方法和属性(非私有的),子类可以继承使用。


注意:只有两个类有关系才可以继承使用,不能随便继承。

继承的好处:提高代码的复用性。

继承的弊端:打破了封装性。


java中不支持多继承的原因:

当一个类继承多个类的时候,如果出现两个一样的方法的话,会出现不确定性,jvm不知道调用哪一个方法。为了解决这个问题后面出现了接口,间接地弥补了这一点。


③多态

何为多态呢?多态就是一个对象在不同状态的表现形式。通俗点说比如你在家里是孩子,你在学校是学生,你在公司就是员工,这是在不同场合下的不同身份和不同的状态。一个接口中定义一个吃饭的方法,不同的类来实现就有不同的状态,张三吃饭,李四吃饭等。

子类以父类的身份出现,但做事情时还是以自己的方法实现。子类以父类的身份出现需要向上转型(upcast),其中向上转型是由JVM自动实现的, 是安全的,但向下转型(downcast)是不安全的,需要强制转换。子类以父类的身份出现时自己特有的属性和方法将不能使用。


5. 面向对象的特点:
a.java就是描述生活中的现象的,只是用代码来描述,代码时死的,但是人是活的,要有自己的理解,java就是解决生活中的问题的。
b.将复杂事情简化;
c.角色上的转变,执行者--->指挥者;
 在项目框架中可以看到,web层干的事情就是三件事(不管是ssh还是ssm框架),①接收参数②处理业务③相应视图

当web层接收到参数需要service调用dao去数据库中查询数据返回给web层。这就是web指挥service去干活,web层不管你service怎么做,它只要自己的数据,你service想办法实现。同样service需要什么结果,就指挥dao去数据库查询相应的数据返回给dao。

在例如rest风格的webservice远程调用,客户端这边不管你远程服务器怎么处理,我只要知道你的访问地址,还有暴露的接口,你远程服务端就要给我相应的结果就行。指挥它去干活。好比经理分配任务后,它不管你怎么做,我只要你在相应时间完成功能需要求,达到要求就行。经理指挥你去干活。这何尝又不是面向对象呢。因为要是什么都自己去实现,那这样就是面向过程变成了。所有的事情都是自己亲力亲为,精力不够也不一定搞的好。别人已经定义好了一些功能,自己直接调用就行。

0 0