Java中抽象类和接口的区别
抽象类
包含抽象方法的一定是抽象类,但抽象类中不一定有抽象方法。抽象类只能被继承,不能被实例化。
接口
接口是一个抽象类型,是抽象方法的集合,不能被实例化
相同点
- 接口和抽象类都不能够被实例化
- 抽象类和接口都可以定义抽象方法,子类和实现类必须对这些抽象方法重写
不同点
-
抽象类有构造方法,主要用于子类实例化的时候,接口没有构造方法
-
抽象类中可以包含普通方法,接口在1.8以前只能定义抽象方法
-
抽象类只能单继承,而接口可以多继承
-
变量:抽象类中可以定义各种类型的成员变量,接口中只能是public static final修饰的静态常量
-
public abstract class People { int age=18; static String name="zhnagjiabin"; final String sex="nan"; static final int sno=110; } interface run{ public static final int no=45; int speed=10; }抽象类的使用场景
约束子类具有共同的行为(不在乎其具体实现),拥有实例变量
接口的使用场景
约束多个实现类具有统一的行为,但是不在其具体实现,实现类中各个功能之间可能没有任何联系
本文探讨了Java中抽象类和接口的主要区别和相似点。两者都无法被实例化,且都用于定义抽象方法。抽象类可以包含非抽象方法和成员变量,而接口仅能定义公共静态常量。抽象类适合约束子类具有共同行为,接口则适用于约束多个类实现统一行为。在实际开发中,选择抽象类或接口取决于具体需求和设计目标。

被折叠的 条评论
为什么被折叠?



