抽象类:当一个类来描述事物的时候没有足够的信息来描述这个事物,这个类就叫做抽象类,需要使用abstract修饰符修饰,抽象类不可以被实例化。抽象类必须有其子类重写所有的抽象方法后才可以被实例化,否则这个子类还是抽象类。抽象类可以拥有普通类中的所有类型成员,抽象类的存在在于被继承。
抽象方法:抽象类中的方法只有声明没有实现的时候,该方法就是抽象方法,需要被abstract修饰,抽象方法必须被定义在抽象类中,这个类也必须被abstract修饰。抽象方法不能使用private final static 来修饰,因为抽象方法在于被重写。
抽象方法在于约束和规定可实例化的子类。
问题1.抽象类中有构造方法吗?
有,用于给子类对象进行初始化。
问题2.抽象类中可以不定义抽象方法吗?
可以,但很少见,目的就是不让这个类创建对象。通常这个类中的方法有方法体,但没有内容。
问题3.abstract关键字不可以和哪些关键字共存?
private,因为抽象方法会被子类重写,如过私有,则子类继承不到父类的抽象方法,就不能被重写。
static,因为抽象方法不能被实例化,不能调用抽象方法,当使用static的时候可以直接用类名来调用,二者相违背。
final,用final修饰的方法是最终方法,不能被重写,而抽象方法的存在目的在于被重写,二者相违背。
问题4.抽象类和一般类的异同点?
相同点:抽象类和一般类都是用来描述事物的,都在内部定义了成员。
不同点:一般类有租够的信息描述事物,而抽象类描述事物的信息不足
一般类中不能定义抽象方法,只能定义非抽象方法,抽象类可以定义抽象方法,也可以定义非抽象方法。
一般类可以被实例化,抽象类不可以被实例化。
问题5.抽象类一定是父类吗?
是的,因为抽象类需要子类对其重写抽象方法后子类才可以被实例化,所以抽象类一定是父类。
当几个类中有共同的方法的时候,可以将这些方法抽取出来,放在一个抽象类中,让所有类都继承于这个抽象类 |