JAVA——接口

55 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,[点击查看活动详情]

接口

接口:当一个抽象类中所有的函数都是抽象的时候,那么就可以将这个抽象类用另外一种表现形式——接口来表示。
JDK7之前是不可以定义接口具体函数的。之后可以(必须是静态的函数,成员函数默认是抽象的)。
对于所有的接口变量这样表示:public static final xxx xxx;
对于所有的接口函数这样表示:public abstract xxx xxx;

interface A{
    int age=10;//public static final int age=10;
    void show();//public abstract void show();
    public static void haha{//具体函数必须是静态的,static。只能通过接口调用,不会继承给子类。A.haha();
    } 
}

接口与类

类与类之间是单继承,只能且只有一个父类。不能多继承的原因是,函数有函数体,会产生二义性。
接口与类之间是实现关系,implements。一个类可以实现多个接口,相当于继承多个抽象类。本质还是子类与父类的关系,只不过在接口这里,一个类可以有多个接口父类。
当一个类想要实现一个接口的时候,有两个选择:
1,重写接口中的函数
2,该类定义成抽象

abstract class Demo implements A{
    public abstract void show();
}
class Demo implements A{
    @override
    public void show(){}
}

接口与接口

不是实现关系,是继承关系,多继承。继承到的是属性,抽象函数,但没有静态函数的继承。\

作用

1,作为类的一种功能扩展在后期对类的功能扩展,这些功能不是该类原先所具有的功能。避免了继承的弊端——只能单继承。
2,向外提供统一的规范。接口一定程度上对我们的代码设计进行了"解耦" 。耦合性:指俩者之间联系。
3,传递代码。

常用接口

内置接口
Comparable:比较接口,给我们的类提供比较的功能。int compareTo(T o):按照自然顺序进行比较。
Iterable:可迭代接口。可以将我们该类的对象用于foreach循环.
Serializable:序列化接口,我们可以将该对象的数据写出去。