Java常见坑4-面向对象

一、面向对象和面向过程的区别

  • 面向过程面向过程性能比面向对象高。因为类调用时需要实例化,有额外的开销,比较消耗资源,所以当性能是最重要的考量因素时,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发。
  • 面向对象:由于面向对象有封装、继承、多态的特性,所以可以设计出低耦合的系统,使系统复用性高、而且更加灵活、更加易于维护。

  注意:Java性能差的主要原因并不是因为它是面向对象语言,面向过程也需要分配内存,计算内存偏移量,主要原因是:Java是半编译语言,最终的执行代码并不是可以直接被CPU执行的二进制机械码。而面向过程语言大多数是直接编译成机械码在电脑上执行。

  面向对象编程图示:
在这里插入图片描述

二、对象实体与对象引用有何不同?

  • new创建对象实例,对象实例在堆内存中,一个对象实体可以有多个对象引用。

  • 对象引用指向对象实例,对象引用存放在栈内存中,一个对象引用只能指向0个或1个对象实体。

三、面向对象的三大特征

1、封装

  封装是指把一个对象的状态信息,也就是属性,隐藏在对象内部,不允许外部对象直接访问对象的内部信息。同时提供一些可以被外界访问的方法来操作属性。

  通过封装,将事物分类成独立个体,符合人们的思考习惯,将复杂的问题简单化。封装也符合开闭原则,对提供方提供扩展开放,对使用方关闭修改。

2、继承

  继承是使用已存在的类定义作为基础,建立新的类,新类可以增加新的数据。通过使用继承,可以快速地创建新的类,提高开发效率。

  同时,使用继承可参考遵循里氏替换的设计原则。

里氏替换原则定义:如果对每个类型为T1的对象O1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都替换成O2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。

  里氏替换原则告诉我们:

  (1)在使用继承时,遵循里式替换原则,在子类中尽量不要重写父类的方法。

  (2)里式替换原则告诉我们,继承实际上让两个类耦合增强了,可以用聚合,组合,依赖来解决问题。

3、多态

  多态,顾名思义,表示一个对象具有多种的状态。

  具体表现

  1、要有继承;

  2、要有重写;

  3、父类引用指向子类对象;

  多态的优点

  1、可替换性:多态对已存在的代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。

  2、可扩充性:多态对代码具有可扩充性。增加新的子类不影响已存在类的使用。

  3、接口性:多态是超类通过方法签名,向子类提供一个共同接口,由子类来完善或者覆盖它而实现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值