面向过程以及面向对象的差异以及面向对象的三大特性


面向对象编程与面向过程编程是相对应的。

面向过程(Procedure Oriented 简称 PO)

面向过程指的是将一件事情进行拆分,分解成一个个方法和数据,然后按照一定的顺序对这些方法进行执行,等方法执行完毕,那么事情也将会完成。
(每个不同的方法可以视为每个不同的工程,所以称为面向过程)

面向对象(Object Oriented 简称 OO)

面向对象指的是将事物抽象成对象的概念,先抽象出对象,然后赋予对象一些属性以及方法,然后再使每个对象执行自己的方法,使问题得到解决。

举例说明

例子:进入商城进行购物

面向过程

执行:进入商城(方法)-> 挑选商品(方法) -> 结账(方法)

//面向过程编程
    System.out.println("进入商城");
    System.out.println("挑选商品");
    System.out.println("结帐");

面向对象

创建(new)出对象”人“;
”人“对象加入数学以及方法:进入商城(方法)、挑选商品(方法)、结账(方法);
执行:人.进入商城(方法) -> 人.挑选商品(方法) -> 人.结账(方法)。

//面向对象编程
class person{                                                    //创建对象“人”
    public void Enter() {
        System.out.println("进入商城");
    }
    public void Select() {
        System.out.println("挑选商品");
    }
    public void Checkout() {
        System.out.println("结账");
    } 
}
//调用对象执行
    person p = new person();
    p.Enter();
    p.Select();
    p.Checkout();

二者优缺点对比

面向过程:
优点:性能比面向对象高,无需实例化对象(只需按一定的顺序执行过程)

缺点:可维护性差(若结账时分有现金结账或手机支付)

面向对象:
优点:易维护、易复用、易扩展,面向对象具有封装、继承、多态的特征,能够设计出低耦合的系统,使系统更加灵活,更加易于维护

缺点:性能方面比面向过程低

面向对象的特性:封装、继承、多态

封装:将客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象进行操作,对不可信的进行信息隐藏。(简单来说就是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。)

继承:继承可以使用现有的类的所有功能,并且无需重新编写原来的类的情况下对这些功能进行扩展。

多态:一个类实例的相同方法在不同情形有不同表现形式。

实例说明

依旧按照上面的例子,对面向对象的三个特性进行说明
封装:
p.Enter(),是由person类的实例化对象p进行调用,而该Enter方法的实现细节已经被封装在Person类中,反观面向过程,则直接将方法细节暴露出来。

//面向过程实现“进入商城”
System.out.println("进入商城");
//面向对象实例化对象实现“进入商城”
person p = new person();
   p.Enter();

继承:
假如现在有了小朋友的出现,小朋友除了进入“挑选商品”外还会有“参与游戏”这一方法。

class children extends person {
    public void Game() {
        System.out.println("参与游戏");
    }
}
//children类继承了person类的方法,并且可以进行扩展
//实例化children对象,其不仅具备“进入商城”方法,同时有了“参与游戏”这一方法
children c = new children();
       c.Enter();
       c.Game();

输出结果:
请添加图片描述
多态:
假如在商城中,年轻人希望在结算时通过手机支付,而老年人希望使用现金支付,那么多态的作用就很明显的展现出来。

//年轻类,将结账方法进行修改
class young extends person {
    public void Checkout(){
        System.out.println("使用手机支付结账");
    }
}
//老年类,将结账方法进行修该
class old extends person {
    public void Checkout(){
        System.out.println("使用现金支付结账");
    }
}
//进行调用后相同的方法因为不同的的情况有了不同的表现形式
        young y = new young();
        y.Checkout();
        old o = new old();
        o.Checkout();

输出结果:
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值