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
什么时候使用接口,什么时候使用抽象类?
大部分的情况下我推荐使用接口,因为接口可以多实现,而抽象类只能单继承,单一个类有自己的父类时,只能选用实现接口的方式。