接口、接口和抽象类的对比
接口
我们首先来看一些生活中有哪些接口:
电脑usb插口,u盘 这些都是接口
那么我们来看一下,什么是java中的接口;
java 中的接口
接口时抽象方法和常量的集合,在jdk1.8中接口可以有静态方法和默认方法
接口的关键字: interface
格式:
interface 接口名字{
........
}
我们来写一个案例:
public interface Animal {
// 常量
public static final int id=1;
// 抽象
public abstract void aa();
// 默认
public default void bb(){
System.out.println("");
}
// 静态
public static int getId(){
System.out.println("指代方法体");
return id;
}
}
静态方法中有 ,常量,抽象,默认,静态方法
我们在来创建一个实现类 实现它
public class DogImpl implements Animal{
@Override
public void aa() {
System.out.println("狗");
}
@Override
public void bb() {
}
}
写个测试类看一下:
public class Test {
public static void main(String[] args) {
DogImpl dog = new DogImpl();
dog.aa();
}
}
接口是一种特殊的抽象类,它不能包含普通方法
接口的特点
常量:默认接口中的所有成员变量都是省略 public static final 这几个关键字,一般接口的成员变量都大写的
抽象方法:默认接口中的所有成员方法都是省略 public abstract的
我们在来看一下什么时候使用接口
接口是用来规范类的
它可以避免类在设计上的不一致
这在多人合作的开发中犹为重要
接口时可以多继承的
类和接口的关系
类和类:单继承不可以实现
类和接口:单继承,多实现
接口和接口:多继承,不可以多实现
继承和接口的使用场景
当我们设计一个非常复杂而又无法实现的类的时候可以使用继承
当我们重新开始编写一些简单的功能或者一些标准的时候可以使用接口
开发中一般使用面向接口编程,抽象类是模板,接口是规范
接口和抽象类的对比
比较点 | 抽象类 | 接口 |
定义 | 使用abstact关键字来修饰的类 | 使用interesting关键字来修饰 |
组成 | 抽象方法,普通方法,构造方法,成员变量,和常量 | 抽象方法,静态方法,jdk1.8注意 |
使用 | 子类继承extends | 实现类实现implements |
关系 | 抽象类可以实现接口 | 接口不能继承抽像类 |
对象 | 都是通过对象的多态实现的 | 都是通过对象的多态实现的 |
局限 | 不能多继承,不能实例化 | 可以多继承,不能实例化 |
选择 | 建议选择接口,不能实例化 | 建议选择接口,避免单继承 |
实际 | 模板 | 标准 |