什么是面向对象(Object-oriented)?
在程序中使用对象来映射现实中的事物,用对象之间的关系来表示现实中事物之间的关系,这种思想就是面向对象(引用自java基础入门)
比如学生和老师就是两个对象,学生和老师之间的关系就是对象之间的关系
面向对象和面向过程的区别是什么?
面向过程更注重事件的步骤和顺序(解决问题的方法),面向对象更注重参与者(对象)以及参与者的属性和行为。
比如洗衣机洗衣服,如果是面向过程,就会将任务拆解成一系列步骤,打开洗衣机,放衣服,放洗衣粉,开启洗衣机等;如果是面向对象,首先先确定洗衣服的参与者,即对象有哪些,以及这些参与者应该做什么。这样就会拆出两个对象,人和洗衣机。人:打开洗衣机,放洗衣粉和开启洗衣机;洗衣机:清洗,烘干。
面向对象面向对象是java中的一个重要的概念,说到面向对象就不得不说面向对象的四个特性:抽象,封装(Encapsulation),继承(inheritance)和多态(polymorphism)。
抽象:抽象是将一类相似的对象的共同特征抽取出来构造类的过程,包括数据抽象和行为抽象,抽象只关注对象的属性和方法,而不关注这些行为的具体细节是什么。类是对象的抽象,是对象的模板。
封装:封装是将对象的属性和方法封装起来,不需要让外界知道具体的细节。封装就像一个黑盒子,对外隐藏里面的信息,用户只需要知道怎么操作,而不需要知道实现的具体细节,比如说用户使用计算机,只需要知道如何用手指敲键盘,不需要知道计算机内部是如何工作的就能使用计算机。所以封装是一种信息隐蔽的方式。如果没有封装,别人就可以随意修改属性,这会对程序的运行造成很大麻烦。举一个例子,如果我们的某个属性的set函数中对该属性的设置有一定要求,比如需要加前缀,其他人如果能随意修改,就会破坏这种规则,有可能会造成后面程序无法识别。
继承:继承是从已有类中得到继承信息创建新类的过程,提供信息的叫父类(基类,超类),得到信息的叫子类(派生类)。通过继承,子类不仅有父类的信息,也可以进行扩展自己的信息,继承就像现实中子女继承父母的性格,子女不仅有父母的性格,也可以有后天形成的性格。继承是多态的基础。
多态;多态是指不同子类对同一信息会表现出不同的行为。要实现多态必须满足2个条件:
1.方法重写(子类继承父类并重写父类已有的或抽象方法)
2.对象造型(父类型引用引向子类型对象)
多态举例:不同身份的人登录系统会进入不同的页面,管理者和用都户拥有login方法,继承于同一个父类的login方法。
参考
<<Java基础入门>>
<<java面试宝典>>
B站100道面试题视频