什么是面向对象

转载自https://blog.csdn.net/a4171175/article/details/90734190?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159987273519725222423720%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=159987273519725222423720&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-4-90734190.pc_first_rank_v2_rank_v28&utm_term=%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1&spm=1018.2118.3001.4187

说到这个面试题目,可以说是老生常谈啦。无论是对于新手还是老手,面对不同时期的程序员,都会有不同的理解,不同的思路。回答的内容深度也会大不相同。

面向对象说到底就是一种思想,任何事物都可以看作是一个对象。在有些面试题目中也称之为OOP(Object Oriented Programming)。分开来解读就是:

Object:对象、

Oriented: 面向的

Programming:程序设计

那么这篇文章就以为java为例子,java是一个支持并发,基于类和面向对象的计算机语言,面向对象的开发具有以下的有点:

  • 代码开发模块化,便于维护。
  • 代码复用性强
  • 代码的可靠性和灵活性。
  • 代码的可读性和可扩展性。

其实上面的还都是铺垫,面向对象主要的思想是:封装,继承,多态,抽象。

封装

封装就是模块化,把不同的功能,封装在不同的模块里。一个好的设计,应该有好的封装思路。这个不属于框架设计里了,属于编程人员对于功能的把握。以及对于封装的理解。

切记,如果随意进行封装,太注重模块的封装,每一个小功能都封装成一个模块,那么对于日后的维护,会造成非常大的困扰。我曾经有位离职的同事,我交接了他的代码。他的代码优点是封装的很完全,但是缺点也是封装的太完全了。一点小的功能都封装起来,一个小方法写了6行左右,就跑到另外一个方法里了。给维护造成了非常的困扰。(当时我想打si他)

但是不能因为封装可能出现上述的原因,就不封装了。比如一个相似的功能,你把他写在统一个方法里,不进行封装,那么,你每次进行修改了这个方法后,你都要提心吊胆,是否会影响其他的功能,测试人员,还要根据你的感觉,去测试其他的功能,无形中给自己和别人都添加了麻烦。

在java中提供了4中修饰符,来实现封装。分别是default,public,private和protected。每一种修饰符都表示了不同的权限。就因为有了这四种修饰符:

  • 通过隐藏对象的内部结构,提高了程序的安全性。
  • 禁止对象之间的不良引用

另外给出一个图帮助大家理解这4个修饰符

作用域当前类同包子类其他
private支持不支持不支持不支持
default支持支持不支持不支持
protected支持支持支持不支持
public 支持支持支持支持

至于使用的场景嘛?

public:更多得在写公共方法会使用到。

private:在类中有些私有得方法会用到但是比较少,一般是在变量私有,使用get,set方法时,会配合public一起使用。

default:在不写修饰符得情况下,默认为default修饰符。另外有个特殊的点,就是接口的方法不写修饰符,默认是public。而不是default

protected:保护,更多得是用于框架层啦,就是子类得引用支持,像封装了struts。在controller层就必须继承某一个类一样。

继承

继承嘛,就简单很多了,就是给对象提供了从基类获取字段和方法得能力,java中提供了extends关键字。好处是在不修改原类得情况下,给现存得类添加新特性。对于程序得升级给了很大得思路。多态

多态

多态,相当于对于同一个接口类型,由多种不同的实现方式,所衍生出来的。

抽象

抽象,相当于把具体的实例中,把本质抽象出来。把行为和具体的实现进行分离开来,对于程序的保密起到一定的作用把。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值