如何理解java中的接口和抽象类
抽象类与接口的区别
?
抽象类体现的是一种继承关系,可以理解为“是什么”;接口体现的是一种实现关系,可以理解为“实现了什么”。
?
类中如果有一个方法是抽象的,则这个类就是抽象类。抽象类中也可以有具体方法。如果抽象类被继承,则这个类中的抽象方法必须被覆盖。而接口中的方法必须都被实现,而且方法是没有实现的,都是空方法,是完全抽象的,它们默认都是抽象方法。可以说,接口是抽象类的一个特例。
?
以下摘自网络:
答:首先,接口和抽象类都是抽象方法和常量的集合;抽象类是是要设计者依据它的格式来修改并创建新的类。
其次,接口里的数据成员必须初始化,且数据成员均为常量;接口里方法必须全部声明为adstract,也就是说,接口不能像抽象类一样保有一般的方法,必须全部都是“抽象方法”。因为所有的接口都是抽象类,所以不用abstract public来定义,而且抽象类不能被实例化,所以接口也不能被实例化.抽象类是不能生成对象的,一个抽象类包含的不一定都是抽象函数,但是接口中的函数一定都是抽象的。在子类继承父类时,抽象类用的是extends;接口用的是implements. 含有抽象方法的类必须被声明抽象类,抽象类的子类必须覆写所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。从本质上讲,接口就是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
?? 总之,从定义、规则和本质上,抽象类和接口都是不同的。