栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

面向对象,面向对象的优点

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面向对象,面向对象的优点

面向对象,面向对象的优点

什么是面向对象呢,百度百科的词条解释是这样的

面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。 [1] 

那可能听起来不是很明白,我们可以用更通俗的语言去理解


当我们要去用微波炉来加热食物的时候,用面向过程的思想,或者说用我们自己的思路来讲,是这样的
1.走到微波炉前
2.打开微波炉门
3.放置食物
4.关闭微波炉门
5.设置加热参数
6.开始加热并等待加热结束
7.打开微波炉门
8.取出食物

那当然,我们可能实际上遇到的实例可能会更加复杂,我们仅作例子探讨
那面向对象可能就不关注具体的每一步了,把每一个独立的个体,当作一个对象来思考,然后将这些对象的各自的属性,方法进行使用和调用
面向对象的思路可能就会是下面这样的
人 

  •     移动
  •     开关门
  •     放置/取出食物

微波炉

  •     开关门
  •     加热(可以设置加热参数)

随后只需要将对应的,所需要的,进行于组合就可以了,具体实现的方法过程可能还会是如面向过程一样,但是可复用性强,易于维护
比如说我们现在不只需要加热食物,我们还需要其会从冰箱里拿取饮料,那面向过程就会有两种情况,一种是拿饮料在加热食物之前,执行完拿饮料才加热食物,一种是在加热食物之后,执行完加热食物才拿饮料
而面向对象只需要变成如下就行
人 
    移动
    开关门
    放置/取出食物
    放置/取出饮料(这一点甚至可以与上一点复用)
微波炉
    开关门
    加热(可以设置加热参数)
冰箱
    开关门
    制冷
因此我们可以自由设定是在之前还是之后,取决于调用的时机不同,不需要重复删减,更新代码,同时当我们有其他的需要之后,只需要扩展方法即可

具体的示例代码如下

public class Human{
    String name = "anonymity";
    int age = 0;
    public Human(String name,int age){
        this.name = name;
        this.age = age;
    }

    public Human(){}
}

首先创建了一个人类类,或者说叫人类模板,他会带有名字和年龄,如果创建的时候指定了名字和年龄,那么他就有名字和年龄,否则就是无名氏并且年龄为零
那么在人类之下,又会有类似于士兵,这是会保护其他人的人类,同时也会对其他人带有攻击性的人类,还有的就是农民,这是会带来食物的人类。
那么这两个人类肯定不会是同样的人类,但他们都会带有人类模板的共同属性,也就是名字和年龄,代码如下

 

 

我们代码编写完了可以创建一个测试类进行测试一下

运行结果如下

 那可以看得出来面向对象可以重复的调用,并且易于修改,假如说士兵需要更换装备,农民需要更换农具,这些都需要修改,如果用我们的这个思想,就会非常的简单。

 那这里,我们也就发现了面向对象的一些特性

1.继承

2.多态

3.封装

可能2 和 3都不是很明显,但是1肯定是能看出来的,不管是士兵还是农民,都继承自人类类,在各自的类中,没有定义名字和年龄,但是却自带有名字和年龄(还有构造方法)

多态主要体现在子类可以扩展父类的方法,增加方法,变得更加的多样

比如说普通的人类的移动可能会叫,走路,跑步,但是在士兵身上,就叫做行军

或者是动物类会叫,但是各种动物的叫都不一样,比如说狗的吠,鸟的啼

封装就是,作为用户(也包括开发人员),不在意内部的实现细节,只关注能否实现,并且将内部的细节隐藏起来,保护起来不被破坏

比如说微波炉,作为用户,我们并不关心发热管是怎么发热的,是用电磁发热还是超声波发热,甚至是核加热我们也不关心,我们只关心加热的效率以及是否有害等

在刚刚的代码例子中,我们并没有很好的实现封装特性,或者说是保护特性,在Java中可以用private关键字可以保护起来

这里举出一个例子

 

 这样子也可以达到一样的效果,但是会很好的保护到内部的数据,可能这个例子并不能很好的体现出来,在我们后面的学习中,会遇到很好的用到的地方

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/309968.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号