《java编程思想》阅读笔记--对接口概念的重新理解

来源:互联网 发布:手机图片涂鸦软件 编辑:程序博客网 时间:2024/06/18 03:15

在此之前,我对java程序设计中接口的使用概念一直很模糊,不明白接口存在的意义,明明写方法在类里面,直接调用就可以,没有任何问题,为什么大家都非要写一个接口来限制实现类呢?一开始我想,可能是为了编程规范吧,代码更容易看懂一些。

然而,今天看了编程思想的一段,重新理解了接口的定义。

在这里,我想要说两种接口的定义

一、使用interface定义的接口

[用interface定义的接口] 本身也是一种类对象,不过它并没有方法实体,所以是不能被直接实例化的,需要有实现类;

[用interface定义的接口] 就相当于重新定义了实现类对外暴露出来的接口(或许这么说有点不正确,以实现类为主的话可以这样说,如果以接口为主,那就是实现类定义了接口中方法的具体实现);

库设计者在实现类中编写方法的实体,在 [用interface定义的接口] 中定义好方法的调用规则(方法名及参数),

类对象的使用者直接使用 [用interface定义的接口] 对象而不是实现类对象,这样处理的话,库设计者需要添加功能或者做优化的时候就不会对使用者造成影响(方法名、参数及返回值不变的情况下),使用者也不会轻易的去改动实现类里面的逻辑,将接口和实现分离,便于维护。

二、对象对外暴露出来的接口

书中有提到,每一个对象都有一个接口,这个概念我现在理解的还是有点模糊,我的理解就是,每一个对象都会有对应的调用规则。

我有一个假想,java程序在编译的时候会为每一个类都创建4套接口:

第一套接口中包含类中的所有属性和方法,在当前类中使用当前类对象的时候就会使用这套接口;

第二套接口中包含类中使用public和protected以及默认没有权限修饰符(default)修饰的所有的属性和方法,在当前类所在的程序包的其他类中使用当前类对象时会使用这套接口。

第三套接口中包含类中使用public和protected修饰的所有属性和方法,在当前类的子类中会使用这套接口(如果在同包中,在使用第二套)

第四套接口中只包含类中使用public修饰的属性和方法,在与当前类没有任何关系(继承,同包)的其他类中使用

以上只是我的一个设想。



这是我的第一篇博客,我也是个刚刚毕业的新人,所以很多概念还很模糊,这篇博客是我自己的理解,希望如果有幸被大家看到了的话,请多多指教,谢谢。