面试官实际上看到的是两方面:你对面向对象的设计思想理解的到不到位,其次是你能否把这种理解应用到实际中去(当然也能看出你 Java 到底学得好不好)。回答问题,不能只是简单地从字面回答,要学会扩展啊。这点需要不断地提醒自己,当然好的拓展也需要扎实的基础。
因此对于第一点你最好能够从你对面向对象的整体印象谈到具体细节,第二点你就结合 Java 来谈,如果能列举出一些典型的具体应用更好。(其实很多情况下,在回答面试官问题时,最后加上一些生动的例子,会加分不少。感觉我之前的面试过了的和这个有一些关系。这说到底,还是个人表达能力的体现,毕竟开发在一个团队中而不是孤军作战,在面试过程中能体现出良好的表达能力绝对是个优势,尤其是在面试题比较简单的时候)
知识储备:
面向对象思想是什么? java是一门纯粹的面向对象的语言。面向对象这种程序设计模式它将现实世界中的一切事物都看作是对象,例如,一个人是一个对象,汽车、飞机、小鸟等等,都是对象;它强调从对象出发,以对象为中心用人类的思维方式来认识和思考问题。每个对象都具有各自的状态特征(也可以称为属性)及行为特征(方法),java就是通过对象之间行为的交互来解决问题的。
Java面向对象的三大特性是什么?
- 封装(面向对象编程核心思想):封装就是将对象的属性和行为特征包装到一个程序单元(即类)中,把实现细节隐藏起来,通过公用的方法来展现类对外提供的功能,提高了类的内聚性,降低了对象之间的耦合性。
- 继承:对原有类的拓展,指从已有的类中派生新的类,新的类能够吸收已有类的数据属性和行为,并能够扩展新的功能。
- 多态:是在继承的基础上。是指允许不同类的对象对同一消息做出响应,根据对象创建实例的不同调用不同的方法,本质是编译时和运行时才决定对象的行为。例如,子类类型的对象可以赋值给父类类型的引用变量,但运行时仍表现子类的行为特征(在内存中运行的,new的实例)。也就是说,同一种类型的对象执行同一个方法时可以表现出不同的行为特征。
知识延伸:Java语言具有哪些特点?(当问到问什么选择Java时可以从这方面回答)
- Java为纯面向对象的语言。《Java编程思想》提到,Java语言是一种“Everything is object”的语言),它能够直接反映出现实生活中的对象,例如火车动物等,因此,通过它,开发人员更容易编写程序。
- 平台无关性。Java语言可以一次编译,到处运行。无论是在Windows平台还是Linux、MaxOS等其他平台上进行编译,编译后的程序在其他平台上都可以运行。由于Java是解释性语言,编译器会将·Java代码变成中间代码,然后再虚拟机上解释运行。由于中间代码与平台无关,因此Java语言可以跨平台执行,具有很好的可移植性。
- Java提供了很多内置的类库,通过这些类库,简化了开发人员的程序设计工作,同时缩短了项目的开发时间,例如,Java语言提供了对多线程的支持,提供了对网络通信的支持,最主要的是提供了垃圾回收器,这使得开发人员从内存的管理中解脱出来。
- 提供了对Web应用开发的支持。例如,Applet、Servlet和JSP可以用来开发Web应用程序;Socket、RMI可以用来开发分布式应用程序。
- 具有较好的安全性和健壮性。Java语言经常被用在网络环境中,为了增强程序的安全性,Java语言提供了一个防止恶意代码攻击的安全机制(数组边界检测和Bytecode校验等)。Java的强类型机制、垃圾回收器、异常处理和安全检查机制使得用Java语言编写的程序具有很好的健壮性。
- 去除了C++语言中难以理解、容易混淆的特性,如头文件、指针、结构、单元、运算符重载、虚拟基础类、多重继承等,使得程序更加严谨简洁。