Java - interface 接口

定义

修饰符 interface 接口名称 {
}
  • 接口是一个抽象类型,无法被实例化。

  • 接口中定义的变量是针对所有类,默认是static

public interface InterfaceDemo { // 定义方法
  void run();
  public abstract void run(); // 等价。 public abstract 为默认修饰
}
public interface InterfaceDemo { // 定义变量  
  /** static变量属于类本身,变量只有一个,final修饰之后属于常量。
   * 常量一般修饰符:public static final (可以省去不写,默认会加上)
   * 常量的变量名称建议字母全部大写,多个单词用"_"连接
   */
  public static final String SCHOOL_NAME = "Bill";
  String SCHOOL_NAME = "Bill"; // 等价
    
  // static变量属于类本身,变量只有一个,但是变量值可以修改。不属于常量。
  public static String name; //报错
}

接口是隐式抽象,声明时无需使用abstract。

多继承多实现

interface CC
{
      void show();
}
interface MM
{
      void method();
}
interface QQ extends CC,MM//接口与接口之间是继承关系,而且接口可以多继承。
{
      void function();
}
class WW implements QQ
{
      //覆盖3个方法。
      public void show(){}
      public void method(){}
      public void function(){}
}
  1. 一个接口可以继承多个接口,一个类可以实现多个接口。

  2. 实现类必须重写接口中的方法。

interface vs abstract

抽象类接口
关键字extendsimplements
实现数量单继承多实现
构造函数可以拥有无法拥有
修饰符类中的方法有任意修饰符接口中的方法默认修饰符为public

实例化接口类

实现接口类可以实例化的充分条件:抽象方法全部实现。

interface AbsDemo
{
      public static final int NUM = 4;
      public void show1();
      public void show2();
}
class DemoImpl01 implements AbsDemo // 实现接口 AbsDemo
{
      public void show1() {}
      public void show2() {}
}
abstract class DemoImpl02 implements AbsDemo // 实现接口 AbsDemo
{
      public void show1() {}
}

DemoImpl01实现了全部抽象方法,因此DemoImpl01可以实例化。

DemoImpl02实现了部分抽象方法,因此DemoImpl02不可以实例化。

新老接口兼容

//老接口
void oldService(A,B);{
  //兼容新接口,传个null代替C
  newService(A,B,null);
}

//新接口,暂时不能删掉老接口,需要做兼容。
void newService(A,B,C);

New parameter in new interfaces, the corresponding parameter can be set as null in old interfaces.

Once upgrade interfaces, the old interfaces may fail to work due to the compatibility. More seriously, this can lead to system's crush.

接口定义常量

public static final是灰色的,说明是默认的,可以省略不写。

将public换成private,编译器会直接报错。

public interface Attribute {
    private String mouth = "mouth";
}

报错:Modifier 'private' not allowed here

interface是定义给别人使用的,因此定义成private是没有意义的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值