java抽象类有什么特点