抽象类和接口的区别
抽象类
抽象类是用来捕捉子类的通用特性,不能被实例化,只能作为子类的超类。抽象类是用来创建继承级子类的模板。
接口
接口是抽象方法的集合,如果一个类实现了接口,就必须要实现接口中所有的抽象方法。接口只是一种形式,接口本身不能做任何事情。
抽象类和接口的对比
参数抽象类接口
默认对的方法实现抽象类可以有默认的方法实现接口的方法完全是抽象的,不能有方法的实现实现子类通过extends继承抽象类,如果子类不是抽象类,则必须提供抽象类中所有声明方法的实现通过implements实现接口,需要提供所有接口中声明方法的实现构造器抽象类可以有构造器接口不能有构造器和正常java类的区别除了不能实例化之外,和普通java类没有区别和普通java类是完全不同的类型访问修饰符抽象类中抽象方法可以使用public、protected、default这些修饰符接口中抽象方法默认public,这也只能使用publicmian方法抽象类类中可以有main函数直接运行接口中没有main函数多继承抽象类可以继承一个类和实现多个接口接口中只可以继承一个类或者实现多个接口速度抽象类速速比接口要快接口速度要慢一些,因为他需要花时间去寻找在类中实现的方法添加新方法在抽象类中添加新方法,在提供默认实现之后不需要修改现在的代码在接口中添加新方法,则必须去修改实现他的类
使用抽象类和接口的情景
如果你想要使用一些抽象方法和一些默认的实现,那么用抽象类。如果想要多继承,则必须使用接口,因为在java中不支持多继承,但可以多实现。 参考:http://www.importnew.com/12399.html