What is the point of abstract classes, when you could just do an interface
本问题已经有最佳答案,请猛点这里访问。
我最近开始想,为什么我会使用一个抽象类,当我可以做一个功能完全相同的接口时。考虑以下内容:
1 2 3 4 5 6 7 8 |
如果我有一个子类扩展它,我肯定会有一个整数A和一个名为printtext的方法。
1 2 3 4 5 6 7 8 |
如果我有一个类实现这个,我肯定会有一个整数A和一个方法printtext。
所以,我看到的唯一区别是,通过接口,我创建的任何类都可以实现我想要的任何其他接口,但是通过抽象类的扩展,我将不允许扩展更多的类。我为什么要上抽象课?我希望这个问题不要太宽泛,尽管我明白为什么有些人会这么认为。
需要考虑的几点:
在Java 8之前,接口没有默认方法。
接口中的
接口无法定义私有(或受保护或包)字段。
接口不能有保护或封装方法;在Java 9之前,它们不能有私有方法。
抽象类没有这些问题。因此,当您需要执行这些操作时(除了1,现在已经存在默认方法),您需要访问一个抽象类(可能除了它实现的接口之外)。