- 包含任何抽象方法的类一定是抽象类,不包含抽象方法的类也可以是抽象类。
- 声明为抽象类,可以阻止创建这个类的对象。
- 抽象类和抽象方法用abstract声明,抽象方法没有方法体,连花括号都没有。
- 继承抽象类必需实现所有抽象方法。
- 继承于抽象类的子类,可以向上转型为“抽象类的对象”。
- 接口中所有的方法都是抽象方法,不需要用abstract来修饰。
- 抽象方法实现接口可以不实现接口中的方法。
- P174-178的完全解耦看不懂,暂时跳过。
- 没有任何域接口相关的存储,所有类可以实现多个接口,还可以同时继承一个类。实现的时候所有的抽象方法都要实现,除非已经在父类中实现。
- 接口可继承多个接口。
- 一个类实现了接口,那么这个类的实例可以向上转型为接口。
- 接口可以继承多个接口,但如果被继承的多个接口具有同名不同类型返回值的抽象方法,编译器就会报错。
- 如果一个类的构造器的参数是接口,那么创建这个类的实例需要的参数,就是实现了这个接口的类的实例。
- 我们可以在任何现有类之上添加新的接口,所以这意味着让方法接受接口类型,是一种让任何类都可以对该方法进行适配的方式。这就是使用接口而不是类的强大之处。
- 接口中的任何域都自动是public static final的。
- 在Java SE5之前,接口是创建常量组的唯一途径,但在Java SE5之后,可以用更便捷的枚举。接口的域,似乎作用不大。
- 接口中的域可以用常量和非常量表达式初始化,不能是空final,因为接口没有像类一样的构造方法。
- 域是static的,会在第一次被加载时初始化。
- 接口可以嵌套在类或其他接口中。嵌套在类中的接口可以声明为private或public,private接口可以被实现为private或public。嵌套在接口中的接口只能是public的。
- 如果设计中需要某个接口,必须优先了解它,否则,不到迫不得已,不要将接口放到设计中。
发表评论