软件构造期末考试将近,在此我将从OOP这一章节开始复习,记录下该章节中的重点内容。
知识点概要:
OOP基本概念:对象、类、属性、方法、接口和枚举
OOP 的独特特征:
——封装与信息隐藏
——继承与重写
——多态、子类型、重载
——静态与动态分派
Java 中一些重要的 Object 方法
设计好的类
OOP的历史
总结
一、OOP基本概念
类:
类定义类型和实现,而对象是类的一个实例
接口:
在java中的接口是方法签名的列表,但没有实现。在实现它的子类中,必须实现接口中的全部方法。
一个类可以实现多个接口(从而具备了多个接口中的方法,一个接口可以有多种实现类。
1、Interface和Class:定义和实现ADT
也可以不需要接口直接使用类作为ADT,既有ADT定义也有ADT实现。(更偏向使用接口来定义变量)
抽象方法:只有定义没有实现。具有方法名字但是没有具体实现的方法,需要有关键字abstract
2、接口存在的问题:打破了抽象边界,接口定义中没有包含constructor,也无法保证所有实现类中都包含了同样名字的constructor。故而,客户端需要知道该接口的某个具体实现类的名字
3、default在接口中的应用:通过default方法,在接口中统一实现某些功能,无需在各个类中重复实现它。可以以增量式的为接口增加额外的功能而不破坏已实现的类。下图展示了接口和具体类中default、static的关系:
4、接口部分总结:
代码安全性高、易于理解、易于改变
枚举:
枚举是一个特殊的类,一般表示一组自定义的常量,当值集较小且有限时,将所有值定义为命名常量(称为枚举)是有意义的。
二、继承与重写
继承:
严格继承:子类只能添加新方法,无法重写超类中的方法。若要防止重写超类中的方法,超类中的方法需要用关键字final修饰。
A final field:防止初始化后重新分配给字段
A final method:防止重写该方法
A final class:防止扩展类
重写:
重写的函数:完全同样的signature(形参,函数名,返回类型);实际执行时调用哪个方法,运行时决定,在重写的方法前,需要使用@Override关键字。若想在重写的函数中使用超类中的方法,使用super关键字。
重写的规则:
- 如果某些操作时所有子类型都共有,但彼此有差别,可以在父类型中设计抽象方法,在各子类型中重写。
- 所有子类型完全相同的操作,放在父类型中实现,子类型中无需重写。
- 有些子类型有而其他子类型无的操作,不要在父类型中定义和实现,而应在特定子类型中实现
三、多态、子类型、重载
1、三中类型的多态:
1.特殊(Ad hoc)多态:一个方法可以有多个同名的实现,但有不同的参数列表或返回值类型(方法/功能重载)。
若是静态方法,则会在编译阶段决定要具体执行哪个方法。
2.参数化(Parametric)多态:一个类型名字可以代表多个类型(泛型编程)。
泛型编程是一种编程风格,其中数据类型和函数是根据稍后要指定的函数编写的,然后在需要时实例化作为参数提供的特定类型。
也就是在其他类中要使用该类时,可以自行选择在运用时需要的类型,能够灵活运用。
类中如果声明了一个或多个泛型变量,则为泛型类;
还包括泛型接口与泛型方法。
3.子类型多态、包含(Subtyping)多态:一个变量名字可以代表多个类的实例(子类型)。
不同类型的对象可以统一的处理而无需区分
标签:知识点,实现,方法,多态,接口,面向对象,OOP,类型,重写 From: https://www.cnblogs.com/JayLv/p/17413290.html