- 抽象类的作用是强制定义了其子类的实现要求(抽象类中有一些抽象方法,子类若想继承自抽象类则必须覆盖这些方法。在实际开发中,几乎不会使用普通类来定义子类,大多数都是继承抽象类)
- 规范:abstract class A {
public abstract void fun1();
public void fun2() {
System.out.println("hello");
}
}
- 抽象类不能制造对象,但是可以定义变量,赋给这个变量的一定是他非抽象子类的对象;
- 抽象类中的抽象函数没有函数体,例如:public abstract void move();
- 一个抽象类可以没有任何抽象方法,所有的方法都有方法体,但是整个类是抽象的。
- 抽象类中所有的的抽象函数必需子类的覆盖,而非抽象函数不需要覆盖。因为子类会继承父类的函数,如果不去覆盖继承来的抽象函数,那么子类就含有抽象函数,含有抽象函数的类必须要声明为抽象类。
- 设计这样的抽象类主要是为了防止制造它的对象出来。
- 有抽象方法的类一定是抽象类!(有abstract修饰的方法,并且方法没有方法体,这样的类一定是抽象类,并且类前面一定要有abstract来修饰)
- 但抽象类不一定有抽象方法(有abstract来修饰的类一定是抽象类,但抽象类里不一定有抽象方法)
相关说明:
- 抽象类不能用final来定义,抽象类必须有子类,而final不能有子类。
- 抽象类只是比普通类多了构造方法而已,普通类中的所有结构抽象类都可以定义,包括普通方法、构造方法、属性、常量等内容;而且子类对象也符合对象实例化流程,先调用父类中的无参构造方法,而后再执行子类自己的构造操作。
- 抽象类中可以没有抽象方法,但是依然不能用关键字new进行实例化操作。
来源:https://www.cnblogs.com/xingyazhao/p/5947826.html