提示:书接上回,我们已经提到过了抽象类,抽象类存在的意义就是被继承,一个普通类如果继承抽象类,那么就必须重写抽象类中的抽象方法,我们也提到过可以解决不重写的方法,但是随着我们学习的深入,就必须要有一个规范来真正解决这一问题。那么这篇关于接口的文章就可以解决心中的疑惑。
我们在现实生活中碰到到的接口有哪些,电脑的USB接口,手机的Type-c充电接口,在Java中接口的定义是⬇️:
接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
通俗点来说,接口是一种规范,如果你想用这个接口,你必须实现我的规范。在Java中,接口可以看成是多个类的公共规范,是一种引用数据类型。
提示:一个Java文件要么是一个类或者是一个接口
我们在建立一个接口时,同样是右击src文件,选中interface,生成一个接口。
接口也是有属性和方法的,接口的声明中方法默认是抽象方法(方法没有方法体)
接口有以下特点需要记住
提示:接口不能直接使用,必须要有一个"实现类"来"实现"接口,实现接口中的抽象方法
子类和父类继承关系用extends,接口使用implements
interface ISahpe{
//实现一个接口,关键字 interface
abstract void func();
}
class Rect implements ISahpe{
//子类和父类继承关系是用extends,接口则使用implements实现关系
@Override
public void func() {
System.out.println("想要实现这个接口,就必须重写接口中的抽象方法");
}
}
public class Main {
public static void main(String[] args) {
}
}
关于接口的特性有多个,我们一一来解释
1.接口是一种引用类型,不能直接new对象
因为能包含抽象方法的只有抽象类能做到,而接口中是可以有抽象方法的,从某种意义上来说,接口也是一种抽象类,所以无法实现实例化。
2.接口只中的成员默认是使用,public static final修饰的,不写也不会报错。
3.接口中的方法默认是public abstract修饰的,不写也不会报错,如果使用其他修饰符都会报错。
4.接口中的方法不能在接口类中实现,只能由实现接口的类实现,通过关键字implements
接口中的方法是抽象方法,是不能直接实现的,所以必须要有一个类来实现接口中的方法。⬇️(下面代码是正确实现接口中的抽象方法)
interface IShape{
public abstract void draw();
}
class Retc implements IShape{
@Override
public void draw() {
System.out.println("画一个矩形");
}
}
class Flower implements IShape{
@Override
public void draw() {
System.out.println("画一朵花");
}
}
public class Test {
public static void main(String[] args) {
IShape iShape=new Retc();
IShape iShape1=new Flower();
iShape.draw();
iShape1.draw();
}