(28)接口

来源:互联网 发布:iphone8销量数据 编辑:程序博客网 时间:2024/06/11 04:04

一、接口初期理解特殊的抽象类,当抽象类的方法都是抽象的,那么该类可以通过接口的形式来表示

class 用于类

interface用于定义接口

二、接口定义时的格式特点:

1.接口中常见定义:常量,抽象方法

2.接口中的成员都有固定修饰符(可以省略,但是为了理解,全写上)

  常量:public static final  常量名大写

  方法:public abstract

记住:接口中的成员都是public

三、继承与实现区别

子类继承(extends)父类:继承,指的是子类可以直接用父类的某些成员变量或者成员方法,即使继承抽象类,抽象类中也可以包含非抽象的成员,直接继承过来。

实现(implements)接口:根据接口的特点,接口中的东西必须是抽象的,必须通过全部复写才能创建实例,更准确来讲,就是必须实现全部。

interface Inter

{

   public static final int NUM=3;

   public abstract void show();

}

class Test implement Inter

{

   通过对接口简单理解:继承。那么抽象方法都会继承到,若不不实现,还是抽象方法,还是抽象类,无法建立对象。

}


总结:

接口:是不可以创建独享的,因为有抽象方法。

需要子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是个抽象类




public abstract class Inter {public static final int NUM=4;public abstract void show();}public class subInter extends Inter {    @Override    public void show() {        // TODO Auto-generated method stub        System.out.println("我实现了接口inter哈哈哈哈");    }    } public class Demo {    public static void main(String[] args) {        // TODO Auto-generated method stub       subInter si=new subInter();       System.out.println(si.NUM);       System.out.println(subInter.NUM);//根据继承思想,静态可用类名访问       System.out.println(Inter.NUM);//常量,根据类的思想,也可以这样写:接口名.常量名       //si.NUM=2;这是错误的,常量不能再赋值    }}



四、接口可以被类多实现,也是对多继承不支持的转换形式。

类为啥能够实现多个接口?之前说过继承只能单继承

举个栗子:

interface Inter

{

   public static final int NUM=3;

   public abstract void show();

}

interface InterA

{

   public abstract void show();

}


class Test implement Inter,InterA

{

     public  void show(){执行语句}

}

关键在于接口中的方法全是抽象的,没实现,在实现类中实现了这个抽象方法,不存在执行哪个同名函数出现不同结果的问题,不存在二义性,所以支持多实现。

五、接口也支持单继承和多继承

interface A

{

public abatract void methodA();

}

interface B  extends A

{

public abatract void methodB();

}

interface C  extends B

{

public abatract void methodC();

}

class D implements C

{

   //必须覆盖三个函数

  public  void methodA(){}

  public  void methodB(){}

   public  void methodC(){}

}

接口支持多继承,但不能出现二义性的函数

①一般的多继承

interface A

{

public abatract void methodA();

}

interface B 

{

public abatract void methodB();

}

interface C  extends B,A

{

public abatract void methodC();

}

class D implements C

{

   //必须覆盖三个函数

  public  void methodA(){}

  public  void methodB(){}

   public  void methodC(){}

}

②多继承不能出现二义性

interface A

{

public abatract int show();


}

interface B 

{

public abatract boolean show();

}

interface C  extends B,A

{

public abatract void methodC();

}

class D implements C

{

   public int show(){}

   public boolean show(){}

}

当创建对象d,调用d.show(),不知道返回什么,出现二义性,而且,D中show()方法也不是重载(参数列表不同)

六、接口的特点(就是对以上的总结)

①接口是对外暴露的规则

②接口是程序的功能拓展

③接口可以用来多实现

④类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口

⑤接口与接口之间可以有继承关系
































原创粉丝点击