软件构造 Object-Oriented Programming (OOP) 面向对象的编程
作者:互联网
用OOP/接口/类实现ADT
一、OOP的基本概念
- 封装与信息隐藏
- 继承与重写
- 多态、子类型、重载
- 静态与动态分派
接口中只有方法的定义,没有实现;接口之间可以继承与扩展;一个类可以实现多个接口,具备了多个接口中的方法,一个接口也可以有多种实现类。
接口的目的是确定ADT规约,接口定义中没有包含constructor,也无法保证所有实现 类中都包含了同样名字的constructor。而类的作用是实实在在地实现ADT,也可以不需要接口直接使用类作为ADT,既有ADT定义也有ADT实现
接口中的每个方法在所有类中都要实现,通过default方法,可以在接口中统一实现某些功能,无需在各个类中重复实现它。default 方法的典型使用方式:以增量式的为接口增加额外的功能而不破坏已实现的类
二、继承与重写
严格的继承要求子类只能添加新方法,无法重写超类中的方法。实际执行时调用哪个方法,运行时决定。
重写的情况:父类型中的被重写函数体不为空:意味着对其大多数子类型来说,该方法是可以被直接复用的;对某些子类型来说,有特殊性,故重写父类型中的函数,实现自己的特殊要求;如果父类型中的某个函数实现体为空, 意味着其所有子类型都需要这个功能, 但各有差异,没有共性,在每个子类中均需要重写;如果某些操作是所有子类型都共有, 但彼此有差别,可以在父类型中设计抽象方法,在各子类型中重写;所有子类型完全相同的操作, 放在父类型中实现,子类型中无需重写。
重写之后,利用super()复用了父类型中函数的功能,并对其进行了扩展。重写的时候,尽量不要改变原方法的本意
继承某个抽象类的子类在实例化时,所有父类中的抽象方法必须已经实现
一个方法可以有多个同名的实现(方法重载)
一个类型名字可以代表多个类型(泛型编程)
一个变量名字可以代表多个类的实例(子类型)
▪ 重载:多个方法具有同样的名字,但有不同的参数列表或返回值类型
重写时父类和子类中的方法具有相同的签名
签名不同时则为重载
子类重载了父类的 方法后,子类仍然继承了被重载的方法
参数多态性是指方法针对多种类型时具有同样的行为 (这里的多种类型应具有通用结构),此时可使用统一的类型变量表达多种类型
三、泛型编程
泛型编程是一种编程风格,其中数据类型和函数是根据待指定的类型编写的,随后在需要时根据参数提供的特定类型进行实例 化。
泛型编程围绕“从具体进行抽象”的思想,将采用不同数据表示的算法进行抽象,得到泛型化的算法,可以得到复用性、通用性更强 的软件。
使用泛型变量的三种形式 :泛型类、泛型接口和泛型方法
类中如果声明了一个或多个泛型变量,则为泛型类
标签:方法,Object,Programming,接口,Oriented,类型,子类,泛型,重写 来源: https://www.cnblogs.com/dddaily/p/16296767.html