创建抽象数据类型(类)是面向对象程序设计的基本概念之一
创建某一类型的变量(即对象实例),之后操作这些变量(使用对象.调用)
面向对象的挑战之一就是在问题空间的元素和解空间的对象建立映射关系
每个类所能接受的消息是不一样的,即某个类只能满足部分需求,而能满足哪些需求能接受哪些消息是接口所定义的。 向某个对象发送消息(调用方法),执行这个方法对应代码。
将对象想象为“服务提供者”,解决问题之前先考虑:什么样的对象可以马上解决问题?这些对象能提供哪些服务,这些对象需要利用哪些对象能更好更快的解决问题,对象应该只关心如何做好分内的事而不去考虑其他事情(内聚)
可以将程序员分为两种,一种是创建新类型的程序员(开发sdk的),另外一种是使用这些新类型的程序员(使用sdk的)。
使用sdk的需要做好这些:收集各种用来实现快速应用开发的类
开发sdk的需要做好这些:只暴露必要的部分,隐藏其他部分。隐藏的部分是为了防止使用sdk的去触碰SDK内部"脆弱"的部分(之前组内贯彻对于具体实现隐藏想法的目的是怕卖不了更多钱哈哈哈,如果程序很简单使用sdk的一看就明白是如何做到的,那么客户会觉得很吃亏也就卖不出去)ps:虽然到现在也没有人买
好了,差点带偏了,这个目的不单单是为了卖更多的钱,最重要的是被隐藏的这些部分**它们很容易被粗心的人或不知情的客户“毁坏”,因此将这实现隐藏会减少程序的bug。
看完上面的说明
第一个原因就是:让SDK使用者无法触及它们不该触及的部分
第二个原因:允许SDK的开发人员之后可以修改其内部实现,这些实现部分是SDK人员开发的,不对外面暴露因此修改前后对于使用者来说没有什么区别,但是其内部实现已经换了另外一种方式。使用者只需知道他能够提供什么功能即可,无需过多关心实现。(ps:有些时候我们可能必须要看其源码实现,这就需要SDK的开发人员去衡量了)
总结下这几个权限控制符: public:任何人都可以访问
private:只允许类型创建者和类型内部方法访问
procoted:比private少了一个限制:其子类也可以访问
默认的修饰符:包访问权限,只有同一个包中才可以共享
日常开发过程中使用java我们确实会忽略这些修饰符,kotlin则默认private,这也是使用kotlin的一个好处,开发者在放宽权限时可以有个潜意识认识到这些限制。