- 接口
作用
理解
特性 - 和抽象类的对比
==作用
由于JAVA是单继承,有局限性,而接口就解决了这个单继承问题
==理解
接口和抽象类有些许相似之处,所以接口可以被认为是一种特别的抽象类
==特性
1.接口不可以实例化对象,但可以向上/向下转型
2.接口里的方法都是抽象方法,可以不加abstract修饰
3.接口中的属性和方法的权限只有public
public interface A {
//private int num1=1;------->编译错误!修饰符应为public
public int num1=1;
//public int num2;------->编译报错!接口的变量必须进行复制
public int num2=1;
}
4.接口中的所有属性都是静态常量,在定义的时候必须进行赋值,否则会报错
5.接口可以直接继承,而且是多继承
6.接口不可以定义任何构造函数
7.一个类只能继承一个父类,但是可以同时实现多个接口
8.类实现接口以后,必须强制重写接口中的所有抽象方法,除非这个子类是抽象类
//Art接口
public interface Art {
//抽象方法:弹钢琴
public void piano();
}
// student 是Person的子类 去实现接口Art
public class Student extends Person implements Art {
//这里只要连接了接口Art 就必须重写Art里的所有抽象方法
//@Override
public void piano() {
}
}
==关键字
interface:接口的声明
implements:接口的关键字
//A接口的声明
public interface A {}
//Test1连接接口A和B
public class Test1 implements A,B {}
相同之处
1.都不可以实例化对象
2.可以包含抽象方法
3.定义好的抽象方法,要求子类强制重写,除非子类是抽象类
不同之处
1.抽象类用abstract修饰,接口用interface—>implements修饰
2.抽象类包含普通和抽象方法 ,接口所有的方法都是抽象方法
//接口A
public interface A {
//接口内只能有抽象方法
public void Show(){}//-------->报错!
public void Show();//-------->报错!
}
3.抽象类属性和方法的权限是四种,接口只能是public
//接口A
public interface A {
private int num1=1;//-------->报错!
protected int num2=1;//-------->报错!
default int num3=1;//-------->报错!
public int num4=1;//-------->正确!
}
4.抽象类里可以写构造函数 , 接口不可以包含构造函数
//接口A
public interface A {
//构造函数:在接口A里,有构造函数会报错!
public A(){}//------->报错!
}
5.抽象类只支持单继承 , 接口可以多实现多继承
6.抽象类里的属性是最普通的属性 ,接口的属性只能是静态常量,而且必须赋值
7.接口的抽象方法不用abstract修饰