1、抽象类与抽象方法
有时,我们希望建立一个通用接口,通过这个接口操作一系列类。该通用接口被称为抽象基类,简称作抽象类。抽象类只是表示一个接口,没有具体的实现内容,因此创建一个抽象类的对象没有任何意义,会报错。建立抽象类的唯一理由是,不同的子类可以用不同的方法表示此接口。
java提供了一个叫做抽象方法的机制,这种方法是不完整的:只有声明而没有方法体,用abstract修饰。如果一个类包含一个或者多个抽象方法,该类必须被限定为抽象的。
如果从抽象类继承,并想创建新类的对象,就必须为基类中的所有抽象方法提供方法定义。否则,导出类便也是抽象类。
2、接口
interface关键字使抽象的概念更向前迈了一步,abstract关键字允许人们在类中创建一个或多个没有定义的方法——提供了接口部分,但仍可以包含有具体实现的方法。interface产生一个完全抽象的类,它根本不包含任何具体实现。
接口中的方法必须被定义为public;否则,它们将只得到默认的包访问权限,这样在方法被继承的过程中,其可访问权限就被降低了,这是java编译器所不允许的。另外,在接口中方法自动就是public的(即使没有public声明)。
3、完全解耦
策略设计模式:创建一个能够根据所传递的参数对象的不同而具有不同行为的方法。
4、java中的多重继承
一个类可以继承(implements)多个接口,但只能继承(extends)一个类。一个接口可以继承(extends)多个接口。
组合接口时可能会造成方法名称冲突,当覆盖,重载与实现混在一起时,便很难区分。因此,要避免在打算组合的接口中使用相同的方法名。