Skip to content

Latest commit

 

History

History
28 lines (20 loc) · 1.85 KB

File metadata and controls

28 lines (20 loc) · 1.85 KB

Java学习笔记-04 接口和抽象类

1 抽象类

  • 在抽象类中,使用abstract关键字,就可以完全不需要实现这个方法。
  • 包含一个或多个抽象方法的类本身必须被声明为抽象的。
  • 除了抽象方法之外,抽象类还可以包含具体数据和具体方法。
  • 抽象方法充当着占位的角色,它们的具体实现在子类中。
  • 类即使不含有抽象方法,也可以将类声明位抽象类。
  • 抽象类不能被实例化。

补充理解:
1、某一个类如果定义了某个方法是抽象方法,那么在抽象类中不能有任何实现,必须在子类中实现才可以。
2、某一个类如果定义了某个方法是抽象方法,其子类并非一定要实现,不想实现父类中的抽象方法的话,子类同样定义成抽象类就可以了。(如果子类不是抽象类就必须实现父类的所有abstract方法)

某次面试的问题:抽象类中可以有静态方法么?
当时不是很理解,回答的乱七八糟。抽象类中是可以定义静态方法的,只是抽象类自己是不能实例化的,所以这个静态方法实际是帮实现类定义的,但是抽象方法是不可以静态的,静态和抽象是不能共存于一个方法上的。

2 接口

2.1 接口的概念

  • 接口不是类,是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。
  • 接口中的所有方法自动地属于public,因此在接口中声明方法时,不必提供关键字public。
  • 接口不能含有实例域。
  • JavaSE8之前,不能在接口中实现方法。现在可以提供简单方法,但是不能引用实例域,接口没有实例。(提供实例域和方法实现的任务应该由实现接口的那个类完成,因此可以将接口看成是没有实例域的抽象类)

2.2 接口的特性