2020.12.11
2020.12.11
接口
1.定义接口
public interface 接口名{
//接口成员
}
接口是一个不能实例化的类型。接口类型的定义类似于类的定义。
2.接口的规则
(1)接口中可以包含属性,但是属性必须是常量,也就是static final修饰的。static和final可以省略,若省略的话在编译时JVM会自动为接口的属性添加关键字static final。例如:
public interface ICimbTree{
static final int AGE=0;
}
相当于
public interface ICimbTree{
int AGE=0;
}
(2)接口中的属性访问修饰符是public的,可以省略,若省略了public,那么在编译的时候,JVM会自动为接口属性添加public。
例如:
public interface IClimbTree{
public int AGE=0;
}
相当于
public interface IClimbTree{
int AGE=0;
}
(3)接口名的访问修饰符与类相同,可以是public和默认。
例如:
interface IClimbTree{
}
public interface IClimbTree{
}
(4)接口中可以定义方法,接口中定义的方法必须是abstract方法,必须是public的方法。其中的abstract和public可以省略,若省略了编译时JVM会自动添加abstract和public
例如:
public interface IClimbTree{
public abstract void climbTree();
}
相当于
public interface IClimbTree{
void climbTree();
}
(5)接口中不允许有实现的方法。
(6)接口不能实例化
3.接口的作用
接口中的方法都是抽象方法,因此接口不允许实例化,接口也是定义规范的。所以接口的作用与抽象类相同。
4.接口的使用
- 子类与父类之间是继承关系
- 子类与接口之间是实现关系
- 一个子类可以继承一个父类,可以实现多个接口
5.接口与抽象类的区别
区别 | 抽象类 | 接口 |
---|---|---|
多继承 | 子类只能继承一个直接抽象类 | 子类可以实现多个接口 |
实现 | 子类使用extends继承抽象类 | 子类通过implements实现接口 |
成员 | 抽象类中可以有实例成员、静态成员、抽象方法。抽象类中的成员方法不能用default关键字修饰符 | 接口中只能有常量、抽象方法。JDK8.0及其以后的版本中可以有static方法和default方法 |
成员变量修饰符 | 抽象类中可以定义常量,也可定义变量 | 接口中只能定义变量(public static final修饰的变量) |
子类实现 | 子类在实现抽象方法时不允许缩小访问权限 | 子类在实现抽象方法时必须指定public权限 |
构造函数 | 抽象类可以有构造函数 | 接口中不能定义构造函数 |
最高层 | 类的最高层是Object | 接口没有最高层 |
相同点 | 两者都不能实例化;都是引用类型;都可以包含抽象方法 |
近期评论