Java中接口和类的主要区别包括:
定义
类定义了一组属性和方法,可以包含字段、方法、构造方法、内部类和枚举等。
接口只包含抽象方法,从Java 8开始,接口也可以包含默认方法和静态方法。
继承与实现
类是继承关系中的子类,可以实现多个接口,但只能继承自一个类(Java不支持多重继承,但可以通过接口实现类似效果)。
接口是继承关系中的父类,一个类可以实现多个接口。
实例化
类可以被实例化,创建对象。
接口不能被实例化。
访问修饰符
类的成员可以是包级私有的,也可以是public、protected或默认(无修饰符)。
接口的成员默认是public的,且接口中的方法默认是public abstract类型。
构造方法
类可以有构造方法用于初始化新对象。
接口不能有构造方法。
封装性
类提供封装性,可以控制对类成员的访问。
接口不提供封装性。
常量
接口中的变量默认是public static final,表示常量。
多态性
接口支持多态性,同一个接口可以被多个类实现,这些类可以有各自不同的具体行为。
速度
在某些情况下,实现接口的类可能比继承抽象类稍微慢一些,因为需要查找在类中实现的方法。
添加新方法
如果往抽象类中添加新的方法,可以给它提供默认的实现,不需要改变现有代码。
如果往接口中添加方法,那么实现该接口的类必须提供这些方法的具体实现。
这些区别使得Java中的类和接口在面向对象编程中扮演不同的角色,类用于定义具体的对象,而接口用于定义一组行为,支持多态性和代码重用