不同点
抽象类可以有不抽象的方法,即某个方法有默认的实现,而接口不可以.
使用抽象类使用extends关键字集成,而接口使用implement关键字来实现.
抽象类可以有构造器,接口不可以....抽象类里的方法可以使用public,protected,default等修饰符,接口的只可以是public.
抽象类可以有main方法,接口不可以....同时,这样做的扩展性极好,当你发现门应该多一个共同的方法时,比如,锁住,你可以在AbstractDoor中扩展,当你需要一个可以报警的窗户的时候,你可以实现Alarmable接口.岂不是美滋滋....面试中如何回答我不敢给出正确答案,但是我认为,代码是写给人看的,所以你需要正确的设计以及正确的命名,来让代码的阅读者一看便懂,而不是深陷与语法,毕竟语法可以被创造.否则,我们需要抽象类和接口的区别干什么...另外,在java8中,Oracle已经开始尝试向接口中引入默认方法和静态方法,以此来减少抽象类和接口在语法上的差异。