类的使用者必须依赖类的公有接口,但类不能依赖它的使用者(闹钟依赖某个人);类更紧密地内聚,降低类间的耦合,松耦合紧内聚。
继承的问题:打破了类的封装特性,子类可以访问父类,子类与父类之间形成紧耦合。
类应该只表示一个关键抽象。当遇到一个抽象的概念,它代表一类的事物,但却很难在现实世界中为这个概念找到一个实例,使这个实例可以代表该概念所表达的所有事物,则可以考虑把这个概念定义为一个抽象类。
接口:
硬件的接口:不同生产厂商的硬件通过接口拼装在一起;软件的接口:不同软件生产厂商生产的类、方法(函数)
接口是使用者(或说客户)与实现者(或说服务者)之间 一组约束的抽象;类的接口是指类提供给其他类可访问的成员数据 和成员方法;方法的接口是指方法的参数、返回 类型和抛出的异常类型等; 一个类也可实现多个接口,可用来建模现实世界的多继承,读在职研究生的教师既是学生也是教师:
接口的使用方法,通过接口类型的引用变量使用接口的实现;多态性的产生:由于接口本身不能创建对象实例,总是用来指向实现它的类的对象实例,因此通过接口类型的引用变量调用方法总是会产生运行时多态。