Java面试:接口和抽象类

Java抽象类有构造函数不?

Java抽象类有构造函数,如果没有显式书写,编译器会为其提供一个无参的构造函数,因为继承他的类的构造函数都会调用super方法来调用父类构造函数创建对象。

为什么Java抽象类不能实例化对象?

因为构造函数不能为抽象的方法分配内存地址。

Java抽象类可以实现接口吗?它们需要实现所有的方法吗?

Java抽象类本质还是一个类,可以通过implements实现接口。因为他们是抽象的类,本身就可以允许抽象方法的存在,所以就不需要实现接口所有的方法。

Java抽象类可以有static方法吗?

可以有,但是没必要。因为要使用抽象类的方法都是通过继承来实现的,static方法无法重载,它的子类也就无法实现。

抽象类可以是final类型的吗?

不可以,被final修饰的类无法被继承,抽象类的抽象方法需要通过继承重写来实现。

抽象类必须有抽象方法吗?

抽象方法是一个被abstract修饰的,没有方法体的一类方法。抽象类可以没有抽象方法,但是从程序员的角度来看,既然没有抽象方法也就没必要将这个类定义为抽象类。

Java抽象类和接口有何不同?

1、接口所有的方法都是抽象的,抽象类可以有抽象方法和非抽象方法。

2、类可以实现很多接口,但是只能实现一个抽象类

3、类实现接口,接口中的抽象方法必须被实现。类继承抽象类可以不实现抽象类的所有方法,但是它本身需要声明为抽象类。

4、接口声明的变量必须是final类型的,抽象类可以包括final和非final类型的变量。

5、接口中的函数都是public的,但是抽象类可以是private、protected,public

什么时候使用接口,什么时候使用抽象类?

大部分的情况下我推荐使用接口,因为接口可以多实现,而抽象类只能单继承,单一个类有自己的父类时,只能选用实现接口的方式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容