首页 > 编程语言 >软构笔记-7-面向对象的编程

软构笔记-7-面向对象的编程

时间:2023-05-20 12:13:04浏览次数:45  
标签:编程 继承 重写 软构 多态 面向对象 类型 重载 方法

目录

软构7

本章大纲:

  • OOP 的基本概念
  • OOP 的显著特征
    • 封装与信息隐藏
    • 继承与重写
    • 多态、子类型、重载
    • 静态与动态分派
  • JAVA 中的一些重要的 Object方法
  • 设计良好的 Classes

基本概念

  • Object
    • State
    • Behavior
  • Classes
    所有的 object 都有一个类,类中定义了 methods 和 fields,所有的 methods 和 fields 都是类成员。
    笼统地说,一个类的方法就是它的 API。

Interface

  • interface 和 Class:定义和实现 ADT
  • 接口之间可以继承和扩展
  • 一个类可以实现多个接口
  • 一个接口可以有多种实现类

在 JAVA 中,接口用来确定 ADT 规约;类用来实现 ADT。

在 interface 中使用 default 方法
  • 在传统方法中,接口中的每个方法在所有类中都要实现
  • 通过 default 方法,在接口中统一实现某些功能,无需在各个类中重复实现它

继承与重写

重写

子类能够重写父类中非严格继承的方法,而不能继承如 final修饰的方法。

  • 重写父类方法之后,子类仍然可以在方法中使用 super() 来调用父类的方法。

构造函数的重写
子类的构造函数必须首先调用父类的构造函数 super(),从而从此追溯到 Object 类。

Abstract Class 抽象类

  • Abstract method(抽象方法):
    一个只有声明没有实现的方法被称为抽象方法,用关键字 $abstract$。
  • Abstract class(抽象类):
    至少含有一个抽象方法的类被称作抽象类。
  • Interface:
    An abstract class which has only abstract methods.

Polymorphism, subtyping and overloading 多态、子类型、重载

三种多态

  • 特殊多态
  • 参数化多态
  • 子类型多态、包含多态

Overloading 重载

  • 重载:多个方法具有同样的名字,但有不同的参数列表或返回值类型
  • 价值:方便client调用,client可用不同的参数列表,调用同样的函数
重载的规则
  • 必须有不同的参数列表
  • 相同/不同的返回值类型
  • 相同/不同的 public/private/protected
  • 可以抛出新的或者更广的检查异常

Overriding vs. Overloading

子类型多态

子类型只是超类型的子集。

  • ArrayList and LinkedList are subtypes of List.

继承和子类型:层次结构一瞥

  • Java Collections API

标签:编程,继承,重写,软构,多态,面向对象,类型,重载,方法
From: https://www.cnblogs.com/blogstb/p/17417013.html

相关文章

  • 软构学习-5、6-设计规约、抽象数据类型(ADT)
    目录5设计规约行为等价性Spec结构Spec强度比较Diagrammingspecifications6抽象数据类型(ADT)操作的抽象类型分类:RepresentationIndependence5设计规约本章大纲:方法的规约前置/后置条件欠定规约、非确定规约陈述式、操作式规约规约强度及其比较如何写出好的规约......
  • 软构笔记-8-ADT和OOP中的“等价性”
    目录软构8ADT的等价操作不可变数据类型的等价性==vs.equals()可变数据类型的等价性软构8本章大纲:理解特性之间的等价关系站在观察者角度,利用AF,定义不可变对象之间的等价关系引用等价性和对象等价性可变数据类型的观察等价性和行为等价性理解Object的契约,正确实现等......
  • 软构笔记-9-面向复用的软件构造技术
    目录软构9面向复用的软件构造技术源代码复用模块级别的复用class/interfaceclass的复用在OOP中设计复用类子类型多态LSP原则协变反协变、逆变软构9面向复用的软件构造技术本章大纲:软件复用的优缺点为复用而construct通用可复用组件的特征开发便携式应用系统的方法可复......
  • 我写了本开源书:《3D编程模式》
    大家好,我写了本开源书,罗列了我从自己的实战项目中提炼出来的关于3D编程(主要包括“3D引擎/游戏引擎”、“编辑器”开发)的各种编程模式本书的在线阅读地址在这里:在线阅读本书的源码在Github中,欢迎star,感恩您:Github地址本书的写作花了我300多个小时,将近3个月的全职写作,凝结了我一......
  • 组件化编程
    模块与组件模块向外提供特定功能的js程序--一般就是一个js文件作用--复用js、简化js的编写、提高js运行效率模块化--当应用中的js都是以模块来编写的--这个应用就是一个模块化的应用组件用来实现局部(特定)功能效果的代码集合作用--复用编码--简化项目编码、提高运行......
  • C#异步编程之async/await
    https://blog.csdn.net/wulex/article/details/127380403  异步、多线程的区别 异步:属于通信的范畴,在发出消息当下不等待对方回应,便开始继续自己的任务。所以c#的很多_异步_操作都在io、socket这些类库下面,都是通信性质的类库, io可以理解向系统内核发送文件......
  • windows 编程模板
    win32消息#include<Windows.h>#include<stdio.h>#include<string.h>//用于在win32中获取控制台HANDLEg_hOutput=NULL;//全局保存实例对象HINSTANCEg_hInstance=NULL;LRESULTCALLBACKWnProc( HWNDhwnd, UINTmsg, WPARAMwparam, LPARAMlpar......
  • Java编程进阶:掌握这五个高级特性让编码更得心应手
    当今,在软件开发中最流行和使用最广泛的语言之一是Java。Java不仅是一种面向对象的编程语言,还可以用于Web开发、移动应用程序编程、云计算和大数据处理。如果你是一个初学者,或者是想要进一步了解Java编程的高级特性,那么这篇文章会帮助你更好地了解Java编程。一、使用lambda表达式在J......
  • 编程打卡:面向对象程序设计测试
    ``gopackagemainimport"bufio"import"flag"import"fmt"import"io"import"os"import"strconv"varinfile*string=flag.String("i","unsorted.dat","Filecontains......
  • 开心档之C++ Web 编程
    C++Web编程什么是CGI?公共网关接口(CGI),是一套标准,定义了信息是如何在Web服务器和客户端脚本之间进行交换的。CGI规范目前是由NCSA维护的,NCSA定义CGI如下:公共网关接口(CGI),是一种用于外部网关程序与信息服务器(如HTTP服务器)对接的接口标准。目前的版本是CGI/1.1,CGI/......