原文:谈谈你对面向对象的理解?、谈一下你对面向对象的理解?。简单修改。
将问题的解决抽象为对象执行动作、对象之间相互交互的过程,即面向对象。把具体事物的特定属性和通过这些属性来实现一些动作的具体方法放到一个类里面,这就是封装。通常将属性设为私有,仅允许通过指定方法来间接访问属性,通过在方法中编写指定代码,来控制访问,所以封装可提升数据的安全性,同时使外部只需知道如何调用 API,而不用考虑被隐藏起来的细节。
封装是我们所说的面向对象编程的特征之一,除此之外还有继承和多态。
继承也就是父类的一些成员,可以被子类重复使用,子类不必再在自己的类里面重新定义一回,父类里有的我们只要拿过来用就好了,所以继承可实现代码复用。而对于自己类里面需要用到的新的成员,子类就可以自己来扩展了。当然,会出现一些特殊情况,就是有一些方法在父类中已经定义好了,但是子类在用的时候,发现需要进行特殊处理,比如普通员工的工资计算方法跟经理的计算方法是不一样的,所以这个时候,我们就不能直接调用父类的这个计算工资的方法了。
这个时候我们就需要用到面向对象的另一个特性,多态。我们要在子类里面把父类里面定义计算工资的方法在子类里面重新实现一遍。多态包含了重载和重写。重写就是把子类从父亲类里继承下来的方法重新写一遍,这样,父类里相同的方法就被覆盖了,当然啦,你还是可以通过 super.CaculSalary 方法来调用父类的工资计算方法。而重载就是类里面相同方法名,不同方法签名的情况,方法签名由方法名和形参列表决定,与方法的返回值、修饰符无关。
有时候还会提到抽象,抽象一方面是提取对象中所需要用到的属性和方法,将其抽象为类,另一方面,可以将类抽象为父类或抽象类、将行为抽象为接口。
总结:
-
抽象:指把核心的东西抽出来,把与我们要解决的问题有关的东西拿出来摆在面前
-
封装:让使用对象的人不考虑内部实现,只考虑功能使用,把内部的代码保护起来,只留出一些个api接口供用户使用
-
继承:就是为了代码的复用,从父类上继承出一些方法和属性,子类也有自己的一些属性
-
多态:实际上是不同对象作用与同一操作产生不同的效果。多态的思想实际上是把“想做什么”和“谁去做”分开