面试题01- 面向对象
一、问题
Q:什么是面向对象? 谈谈你对面向对象的理解
什么是面向对象?
这里需要区分,什么是面向对象,什么又是面向过程?
面向过程:注重事情的每一个步骤及顺序
面向对象:注重事情有哪些参与者(对象),以及参与者需要做什么
举个例子
洗衣机洗衣服
1.面向过程: 1、打开洗衣机-> 2、放衣服 -> 3、放洗衣液 -> 4、洗衣服
2.面向对象:
对象 : 人 – 打开洗衣机、放衣服、放洗衣液
对象 : 洗衣机 – 洗衣服
总结:面向过程比较直接高效、而面向对象更易于复用、扩展和维护。
二、解答
面向对象有三个特性: 封装、继承、多态
封装: 封装的意义在于,明确标识出允许外部使用的所有成员函数和数据项。、
内部细节对外部调用透明,外部调用无需修改或者关心内部实现。//实现内部安全
1、javabean 的属性私有,提供get/set对外访问,因为属性的赋值或者获取逻辑只能由javabean本身决定。而不能由外部任意修改。
private String name;
public void setName(String name){
this.name = "举个栗子,给name加前缀"+name;
}
2、orm 框架
操作数据库,我们不需要关心链接是如何建立的,SQL是如何执行的,只需要引入mybatis,调用方法即可。
继承:继承基类的方法,并做出自己的改变或扩展
子类共性的方法或者属性直接使用父类的,而不需要自己再定义,只需要扩展自己个性化的
多态:基于对象所属类的不同,外部对于同一个方法的调用,实际执行的逻辑不同。
继承,方法重写,父类引用指向子类对象
父类类型 变量名 = new 子类对象;
变量名.方法名();
father s = new son;
s.method();
无法调用子类特有的功能。(子类独有的方法,无法调用)
调用的方法父类中必须有的,也就是说 方法重写。
解释一下
father:
say(); //打印我是父类
son:
say();//打印我是子类
调用 s.say();
打印,我是子类