1、封装:
对于一般人来说,银行的印象就只有一排对外办公的窗口,然后有存款和取款2种基本业务。
银行是一个结构非常复杂,功能非常众多的机构。但实际上,我们并不会很关心它的内部是怎样运作的,比如银行的员工是怎样数钱的,怎样记录存款,怎样开保险柜,等等。这些对于外部的人员来说,知道了可能会引起更多不必要的麻烦。所以银行只需要告诉你,你可以在这个窗口办理业务,可以存款和取款,就够了。
所谓的封装,就是指把内部的实现隐藏起来,然后只暴露必要的方法让外部调用。
2、继承:
刚才提到了银行有2种最基本的业务,存款和取款。但现实中,大部分的银行都不止这两种业务,还有很多其他的业务,比如投资窗口、办理对公业务的窗口等等。这些业务,是在最基本的银行存取款业务的基础上再添加的,所以我们可以理解成,基本的银行是只有2种业务的,然后后来的银行在保留了原有银行的业务基础上,再扩展了其他的业务。
如果把基本的银行看做父类(基类),包含存款和取款2个公共方法,那么后来的银行可以看做是子类,它在继承了基本银行存取款的公共方法只后,还自己新增了投资和对公业务两个公共方法。有些银行甚至会重写基本的存取款功能,让自己和基本银行的业务有一定的区别。这个过程,就是继承。
3、多态:
同样是存款的业务,如果我拿着人民币和拿着美元去银行办理,实际上银行处理的方式是不一样的。这种办理同一种业务(公共方法),由于给予的内容(传入的参数类型或者数量)不一样,而导致操作(最终实现的方法)不一样,叫做编译多态,也叫做函数的重载。
接下来,我去了一家银行存款,我不知道这家银行的存款业务有没有和基本银行不一样,反正我就是把钱存进去了,然后具体业务的实现究竟是调用了基本银行存款功能,还是这家银行本身有新的存款功能实现,我是不关心的。这种外部直接调用一个方法接口,然后具体实现的内容由实际处理的类来决定使用基类或者子类的方法,就叫做运行时多态。
4、抽象:
有些观点并没有把抽象列为面向对象的特征。但实际上这是面向对象的一个本质的东西。
虽然银行五花八门,但我们可以找到他们的共性,比如上面说的,基本的银行有存取款业务,投资银行有投资业务,之类,其实就是对银行作出了一个抽象的看法。








暂无数据