面向对象的编程(OOP)知识点总结

  软件构造期末考试将近,在此我将从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. 如果某些操作时所有子类型都共有,但彼此有差别,可以在父类型中设计抽象方法,在各子类型中重写。
    2. 所有子类型完全相同的操作,放在父类型中实现,子类型中无需重写。
    3. 有些子类型有而其他子类型无的操作,不要在父类型中定义和实现,而应在特定子类型中实现

 

三、多态、子类型、重载

1、三中类型的多态:

  1.特殊(Ad hoc)多态:一个方法可以有多个同名的实现,但有不同的参数列表或返回值类型(方法/功能重载)。

    若是静态方法,则会在编译阶段决定要具体执行哪个方法。

  2.参数化(Parametric)多态:一个类型名字可以代表多个类型(泛型编程)。

    泛型编程是一种编程风格,其中数据类型和函数是根据稍后要指定的函数编写的,然后在需要时实例化作为参数提供的特定类型。

    也就是在其他类中要使用该类时,可以自行选择在运用时需要的类型,能够灵活运用。

    类中如果声明了一个或多个泛型变量,则为泛型类;

    还包括泛型接口与泛型方法。

  3.子类型多态、包含(Subtyping)多态:一个变量名字可以代表多个类的实例(子类型)。

   不同类型的对象可以统一的处理而无需区分

 

    

  

 

  

  

    

posted @ 2023-05-18 20:55  Jayhawk  阅读(121)  评论(0)    收藏  举报