Java抽象方法是一种没有实现体的方法,用abstract关键字修饰。抽象方法必须定义在抽象类中,抽象类可以拥有抽象方法和非抽象方法。抽象方法必须被子类实现,否则子类也必须定义为抽象类。抽象方法的作用是为了让子类实现多态,让子类在继承父类时,拥有重写抽象方法的能力。
非抽象类为什么能够拥有抽象方法
现在明确了什么是Java抽象方法,再来看一下非抽象类为什么能够拥有抽象方法。其实这个问题很好解决,因为非抽象类中的抽象方法必须在子类中被实现,否则子类也必须定义为抽象类。所以非抽象类拥有抽象方法是为了约束子类必须实现该方法,实现了代码重用,增强了代码的可维护性。
使用非抽象类定义抽象方法的注意事项
虽然非抽象类定义抽象方法有一定的好处,但是我们也需要注意一些事项。首先,在非抽象类中定义抽象方法必须是public或protected修饰的,这样才能保证子类能够重写该方法;其次,如果一个类中有抽象方法,它必须被定义为抽象类;最后,非抽象类定义抽象方法时,不能直接实例化该类,需要通过其子类来实例化。如果我们不注意这些问题,就会造成代码的混乱和运行时的异常。