• 转行小白成长路-java篇


    第9章:接口

      抽象类是对事物不完全的抽象,而接口更甚,连指向都没有。接口是不同于抽象类,更不同于普通类。只要明白接口没有指向,也就能理解为什么关键字不同了。不管是抽象类还是普通类都是class,他们都继承自object类,表示的都是对象。而接口是interface,它可以不表示任何对象(也可以有指向哪一类事件),和object是同一级的存在,所以关键字不同还是可以理解的。

      有几点是需要注意的,因为接口并没有具体指向,也就不能生成对象,同时也表示它没有构造器,没有构造器说明它不能在堆中初始化,所以它的成员变量的生命周期都是跟随类的,也就是说都需要是static final 的,这点是正常的思维逻辑。虽然接口的属性(因为没有对象,所以不能称作成员变量)非常适合用作常数,但有枚举(enum)更适合,功能更好。其次因为抽象类有指向,只是抽象的不完全,所以抽象类是单继承,而接口没有完全指向也就说明它是可以多继承的,但是接口不能实现接口,毕竟接口没有明确的指向。接口中方法的访问权限都需要限定成public,因为接口里面的方法就是表示要完成的动作,也是不管哪一类对象都要有的,所以做成public 没有太大的问题。嵌套的意义我真的没有弄明白,如果有体会可以讨论下。

      灵活性接口是更要强一些的,因为多实现,所以生成的对象可以用到所有接口作为参数的方法中。至于什么时候用接口,何时用抽象,书中的大意是看方法是否有定义。翻译成我的语言就是是否有指向,是否确定了指向哪一类的对象。再具体一些就是如果要实现某些方法作为主体,就用接口定义;方法有定义,或者就要描述一类对象就用抽象类。用树状图分析,一层一层向下分。具体的设计例子就是throwable--向外抛出,主要就是抛出动作,以抛出这一系列方法为主。用的接口定义,然后又分为异常和错误等来继续抛出动作(方法),异常部分又分为运行时异常和检查异常来执行异常的动作(方法),最后具体的类来实现运行时异常和检查异常的动作(方法)。

      猜测一下存储的运行方式对比继承抽象类,因为抽象类和接口不会用new来创建对象,所以也就说明他们主要是以文件的形式存在。所以他们更应该是前期绑定,在文件加载的时候会检查。如果不对没等项目启动就会出错。

  • 相关阅读:
    日志
    设置和开启定时器
    缓存管理
    计算机程序员能做多久,这个行业有年龄限制吗?
    程序员都是怎么工作的?
    做程序员怎么样?
    javascript中this关键字
    1003. 二哥养细菌—java
    1002. 二哥种花生——java
    this与static
  • 原文地址:https://www.cnblogs.com/aiwin/p/12374246.html
Copyright © 2020-2023  润新知