Description: this article will talk about the difference between abstarct class and interface
抽象类
抽象类不能实例化对象,所有抽象类必须被继承,才能被使用
父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法
java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口
1 | public abstract class Employee{ |
抽象方法
抽象方法只包含一个方法名,而没有方法体,该方法的具体实现由他的子类确定
1 | public abstract class Employee{ |
- 如果一个类包含抽象方法,那么该类必须是抽象类
- 任何子类必须重写父类的抽象方法,或者声明自身为抽象类
总结
- 抽象类不能被实例化
- 抽象类中不一定包含抽象方法,但是有抽象方法的类必须是抽象类
- 抽象类中的抽象方法只是声明,不包含方法体
- 构造方法,类方法不能声明为抽象方法
- 抽象类的子类必须给出抽象类的抽象方法的具体实现,除非该类也是抽象类
接口
一个类通过继承接口的方式,从而来继承接口的抽象方法,从而来继承接口的抽象方法
接口并不是类,编写接口的方式和类很相似,但是他们不属于相同的概念,类描述对象的属性和方法,接口则包含类要实现的方法
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法
接口无法被实例化,但是可以被实现,一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类
接口的变量默认是public static final的, 方法默认是public abstract的
接口的声明
1 | interface Animal{ |
接口的实现
1 | public class Cat implements Animal{ |