Java中抽象类和接口的具体区别 都分别什么时候用
学习Java已经一个月的时间了,期间经历了从入门到放弃再到重拾信心重新奋斗。今天的学习总结是关于Java中抽象类和接口的区别总结。
一、Java抽象类
1.抽象类必须用 abstract修饰
2.如果一个类有abstract方法,这个类一定是抽象类
3.抽象类不一定有抽象方法
4.抽象类可以有自己的变量
5.如果一个类,如果继承一个抽象类,如果没有实现所有的抽象方法,那它也要为抽象类
抽象类特性:
抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。
二、java接口
1.接口的定义为的关键字为interface
2.接口中只能有方法和变量,变量为public static final类型,方法只能被可以为public(默认)和protected修饰,方法不能有具体的实现
3.一个类可以实现多个接口
4.一个类实现接口,必须要实现接口的所有的方法
Java接口特性:
接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情。
三、Java抽象类和接口有什么区别:
四、我们该什么时候使用抽象类和接口?
在java开发中90%使用的都是接口,抽象类往往只是实现一个过渡。抽象类定义的抽象方法与接口定义的方法有点不同,抽象类定义的方法父类不要求子类强制覆写,接口定义的方法,其实现子类必须覆写。
具体情况具体分析,举例如下:
如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。