- 在抽象类中,使用
abstract关键字,就可以完全不需要实现这个方法。 - 包含一个或多个抽象方法的类本身必须被声明为抽象的。
- 除了抽象方法之外,抽象类还可以包含具体数据和具体方法。
- 抽象方法充当着占位的角色,它们的具体实现在子类中。
- 类即使不含有抽象方法,也可以将类声明位抽象类。
- 抽象类不能被实例化。
补充理解:
1、某一个类如果定义了某个方法是抽象方法,那么在抽象类中不能有任何实现,必须在子类中实现才可以。
2、某一个类如果定义了某个方法是抽象方法,其子类并非一定要实现,不想实现父类中的抽象方法的话,子类同样定义成抽象类就可以了。(如果子类不是抽象类就必须实现父类的所有abstract方法)
某次面试的问题:抽象类中可以有静态方法么?
当时不是很理解,回答的乱七八糟。抽象类中是可以定义静态方法的,只是抽象类自己是不能实例化的,所以这个静态方法实际是帮实现类定义的,但是抽象方法是不可以静态的,静态和抽象是不能共存于一个方法上的。
- 接口不是类,是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。
- 接口中的所有方法自动地属于public,因此在接口中声明方法时,不必提供关键字public。
- 接口不能含有实例域。
- JavaSE8之前,不能在接口中实现方法。现在可以提供简单方法,但是不能引用实例域,接口没有实例。
(提供实例域和方法实现的任务应该由实现接口的那个类完成,因此可以将接口看成是没有实例域的抽象类)