答案:接口不能代替抽象类。
区别:抽象类有构造器,接口没有。
抽象类可以有主体方法,接口不能
接口的变量都是静态不可改变的变量
注意: 方法的主体就是方法的实现
抽象类和接口都一样可以声明方法,不需要实现方法
可是抽象类可以有主体的方法。既然抽象类有主体的方法所以就不能被接口代替。因为接口是强调的是功能,是规范,没有实现。然后抽象类是既可以有主体方法,又可以有声明的方法。
比如现在有一个房子,房子又分为住宅,公司等。但是这个房子的行为有两个行为,第一可以在里面睡觉,第二可以遮风挡雨,大家都知道子类住宅,房子都可以遮风挡雨,所以这个行为你就不用实现了在子类里面,然后睡觉其实是比较模糊的行为(当然你之前可能不知道在住宅是在床上抱着老婆睡,在公司睡是坐在椅子上趴着睡),当然你可以之前设计就知道睡觉这个行为在房子这个父类里面,但是现实在我们开发的过程中,父类的这个行为你不知道子类是怎样的实现,所以在父类中,睡觉这个行为需要写成抽象的方法。这样抽象类房子就会让子类用起来方便不必要重写多余的行为实现,比如住宅实现了房子,住宅就不需要写父类的遮风挡雨行为的实现,只需要写睡觉的行为实现就行了。大家想一想如果父类写成接口的时候,其实房子接口的两个行为必须都要写成声明的方法,这样就会让子类在实现的时候都要重写遮风挡雨这个行为,可是在子类看来住宅和公司一模一样的遮风挡雨为什么还让我写一遍
综述:通过以上 接口是代替不了抽象类的。