什么是面向对象

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

面向对象说到底就是一种思想,任何事物都可以看作是一个对象。在有些面试题目中也称之为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关键字。好处是在不修改原类得情况下,给现存得类添加新特性。对于程序得升级给了很大得思路。多态

多态

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

抽象

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

 

 

你可能感兴趣的:(Java面试题库)