持续创作,加速成长!这是我参与「掘金日新计划 · 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:序列化接口,我们可以将该对象的数据写出去。