第九章 接口

  1. 可以在 interface关键字前面添加public关键字(但仅限于该接口在与其同名的文件中被定义)。如果不添加public关键字,则它只具有包访问权限,这样它就只能在同一个包内可用,接口也可以包含域,但是这些域隐式地是static和final的。
  2. 可以选择在接口中显式地将方法声明为public的,但即使你不这么做,他们也是public的。因此,当要实现一个接口时,在接口中被定义的方法必须被定义为是public的;否则,他们将只能得到默认的包访问权限,这样在方法被集成的过程中,其可访问权限就被降低了,这是Java编译器所不允许的。
  3. interface CanFight {
    void fight();
    }
    interface CanSwim {
    void swim();
    }
    interface CanFly {
    void fly();
    }
    class ActionCharacter {
    public void fight() {}
    }
    class Hero extends ActionCharacter
    implements CanFight, CanSwim, CanFly {
    public void swim() {}
    public void fly() {}
    }

    CanFight接口与ActionCharater类中的fight()方法的特征签名是一样的,而且,在Hero中并没有提供fight()的定义。可以拓展接口,但是得到的只是另一个接口。当想要创建对象时,所有的地冠以首先必须都存在。即使Hero没有显式地提供fight()的定义,其定义也因ActionCharacter而随之而来,这样就使得创建Hero对象称为了可能。

  4. 一般情况下,只可以将extends用于单一类,但是在创建新接口时,extends可以引用多个基类接口。
posted on 2015-10-27 11:17  路灯Evan  阅读(341)  评论(0编辑  收藏  举报