首页 > 编程语言 >面向对象的编程(OOP)知识点总结

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

时间:2023-05-18 21:16:07浏览次数:41  
标签:知识点 实现 方法 多态 接口 面向对象 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)多态:一个变量名字可以代表多个类的实例(子类型)。

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

 

    

  

 

  

  

    

标签:知识点,实现,方法,多态,接口,面向对象,OOP,类型,重写
From: https://www.cnblogs.com/JayLv/p/17413290.html

相关文章

  • Nacos必知必会:这些知识点你一定要掌握!
    前言Nacos是一个开源的服务发现、配置管理和服务治理平台,是阿里巴巴开源的一款产品。Nacos可以帮助开发者更好地管理微服务架构中的服务注册、配置和发现等问题,提高系统的可靠性和可维护性。本文将介绍Nacos的必知必会知识点,包括服务注册与发现、配置管理、命名空间等内容......
  • 面向对象设计里引入 Friend 是对封装性的破坏吗,friend 在 SAP ABAP 里的应用场景
    笔者的SAP技术交流群里,有朋友提问:我想问一个很基础的问题,为什么类要有friend啊反正我工作这些年,在SAP生产代码里没用过友元,只是在生产代码的单元测试代码里用过,原因也就是让单元测试代码能够访问到被测试的生产类的私有属性。代码如下:SAPABAP的帮助文档:在面向对象......
  • 一、Hadoop平台安装
    卸载自带OpenJDK(最小化安装不用执行)[root@master~]#rpm-qa|grepjava[root@master~]#rpm-e--nodepsxxx配置免密登录生成密钥对:[root@master~]#ssh-keygen-trsa(回车四次)发送公钥:[root@master~]#ssh-copy-id192.168.100.10ssh-copy-id192.168.100.20ss......
  • 五、Sqoop平台安装
    实验任务一:下载和解压Sqoop解压sqoop:tar-zxvfsqoop-1.4.7.bin__had.gz重命名:mvsqoop-1.4.7.bin__hadoop-2.6.0/sqoop实验任务二:配置Sqoop环境切换目录:cd/usr/local/src/sqoop/conf复制sqoop-env-template.sh模板:cpsqoop-env-template.shsqoop-env.sh编辑文......
  • Hadoop的核心配置文件
    1.core-site.xml:该配置文件包含了Hadoop通用配置,例如Hadoop的文件系统和I/O设置、Hadoop日志目录、Hadoop缓存设置等。2.hdfs-site.xml:该配置文件包含了Hadoop分布式文件系统(HDFS)的配置,例如HDFS的副本数、块大小、数据目录、安全设置等。3.yarn-site.xml:该配置文件包含了Hado......
  • 【hadoop】 3005-hadoop对象序列化编码
    一、hadoop序列化操作Writable接口,是根据 DataInput 和 DataOutput 实现的简单、有效的序列化对象MR的任意Key和Value必须实现Writable接口.MR的任意key必须实现WritableComparable接口二、自定义Writable,实现MapReduce程序1、需求内容日期 ......
  • 【hadoop】 4001-Partitioner编程
    MapReduce重要组件——Partitioner组件(1)Partitioner组件可以让Map对Key进行分区,从而可以根据不同的key来分发到不同的reduce中去处理;(2)你可以自定义key的一个分发股则,如数据文件包含不同的省份,而输出的要求是每个省份输出一个文件;(3)提供了一个默认的HashPartitioner......
  • 《暂时无法归类的知识点》
    Python默认解释器编码:utf-8计算机中的单位:位/字节/K/M/G/T/P修改hosts文件C:\Windows\System32\drivers\etc\hostsRCE:即远程命令执行。命令执行又称命令注入、代码执行等。核心原理是拥有变量的控制权。PHP命令执行函数:system/exec/passthru/shell_exec ......
  • 大模型知识点
    参数有效化微调(ParameterEfficientFineTuning,PEFT)参数有效化微调大致可以分为三个方法:Adapter、Prompt、LoRA LORA:LoRA的思想也很简单,在自注意力层的四个权重矩阵Wq,Wk,Wv,Wo的所有或者部分旁边增加一个旁路(如文中表示在GPT3上只有Wq和Wv加了旁路),做一个降维再升维的操......
  • Hadoop-3.3.5单机版安装步骤
    1.下载JDK和Hadoop[略]2.解压[略]3.创建hadoop数据存储的目录mkdir-p/home/hadoop/tmp/home/hadoop/hdfs/data/home/hadoop/hdfs/name4.配置JAVA环境和HADOOP_HOMEvim/etc/profile添加如下内容JAVA_HOME=/home/fanqi/jdk1.8.0_202HADOOP_HOME=/home/hadoop/hadoop-......