面试题01-面对对象


一、面向对象

1.1区别

面向过程:

  • 注重处理问题的步骤
  • 更加高效
void 打开洗衣机(){...}
void 放衣服(){...}
void 放洗衣粉(){...}
void 清洗(){...}
void 烘干(){...}

面向对象:

  • 注重处理问题的参与者及其各自的需求
  • 易于复用,扩展,维护
 class 人{
    void 打开洗衣机();
    void 放衣服();
    void 放洗衣粉();
}
class 洗衣机{
    void 清洗();
    void 烘干();
}

1.2三大特性

封装

明确标识出允许外部使用的所用成员函数和数据项

  • JavaBean的属性私有,提供geter,seter对外访问,属性的赋值只能由javabean本身决定,外部无法修改
    eg:
/*
 * 属性的赋值只能由javabean本身决定,
 * 属性的赋值name前必须有"我叫:"
 */
private String name;
public void setName(String name){
    this.name = "我叫:"+name;    
}
  • orm框架

继承

继承父类的方法,并作出改变和扩展;
子类共性的方法或者属性直接调用父类的;

多态

基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑不同
条件:存在继承,存在方法的重写,父类引用指向子列对象

父类类型 变量名 = new 子类对象();
变量名.方法名()

弊端:无法调用子类的特有功能