什么是面向对象?谈谈你对面向对象的理解。
答:面向对象是相对于面向过程来讲的,面向对象和面向过程是两种不同的处理问题的角度。
面向过程强调的是处理问题的步骤和顺序,而面向对象强调的是有哪些参与者(对象),以及每个对象各自需要做什么(方法)。
例如:洗衣机洗衣服
面向过程:将任务拆解成一个一个的步骤(函数)
面向对象:
会拆分出两个对象:
人:打开洗衣机、放衣服、放洗衣粉
洗衣机:清洗、烘干
面向过程直接高效;面向对象易于复用、扩展和维护。
面向对象三大特性
封装
内部细节对外部不可见,外部不需要修改或者关心内部实现。
比如:
1.学生信息管理系统,Student类的name属性是private,Teacher对象不可以调用Student类的setname(),只能调用Student类的getname()。
2.像Java的mybatis、Python的Django框架等,里面都会内置一个ORM框架,这个也是封装的体现,开发者在操作数据库时,不需要关心连接是如何建立的,sql是如何执行的,只需要引入像Java的mybatis,调用方法即可。
继承
子类extends父类的属性和方法,不需要自己再定义即可使用父类的属性和方法,只需要扩展自己个性化的。
多态
例如学生管理系统,Student类和Teacher类都继承自Human类,但是,学生类和老师类的属性和方法又不一样,学生可以调用听课方法,老师可以调用教课方法。
继承和多态是一脉相承的。有多态必然有继承。
父类无法调用子类独有的方法。