当前位置: 首页 > news >正文

面向对象的要素

理解面向对象

程序的三种基本结构
(1)顺序结构
(2)选择结构
(3)循环结构
面向对象程序设计简介

面向对象是一种更优秀的程序设计方法,它的基本思想是使用类、对象、继承、封装、消息等基本概念进行程序设计。

类和对象

采用面向对象方式开发的软件系统,其最小的程序单元是类,这些类可以生成系统中的多个对象,而这些对象则直接映像成客观世界的各种事物

在这里插入图片描述

成员变量(状态数据)+方法(行为)=类定义

(1)

对象是面向对象方法中最基本的概念,它的基本特点有:标识唯一性、分类性、多态性、封装性、模块独立性好。

(2)

类是具有共同属性、共同方法的一类事物。类是对象的抽象;对象则是类的实例。而类是整个软件系统最小的程序单元,类的封装性将各种信息细节隐藏起来,并通过公用方法来暴露该类对外所提供的功能,从而提高了类的内聚性,降低了对象之间的耦合性。

(3)

对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息,消息是一个实例与另一个实例之间相互通信的机制

(4)

在面向对象方法中,类之间共享属性和操作的机制称为继承。继承具有传递性。继承可分为单继承(一个继承只允许有一个直接父类,即类等级为树形结构)与多继承(一个类允许有多个直接父类)。

面向对象的基本特征

面向对象一共有三个基本特征

(1)封装 封装指的是将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能

Java提供了private、protected、public安安个访问控制修饰符来实现良好的封装

(2)继承 是面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法

提供了extends关键字来让子类继承父类

(3)多态 多态指的是子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征,这意味着同一个类型的对象在执行同一个方法时,可能表现出多种行为特征。

(4)抽象 除此之外,抽象也是面向对象的重要部分,抽象就是忽略一个主题中与当前目标无关的那些方面

java的面向对象特征

一切都是对象

在Java语言中,除8个基本数据类型值之外,一切都是对象,而对象就是面向对象程序设计的中心。

(1)对象具有状态,一个对象用数据值来描述它的状态。

Java通过为对象定义成员变量来描述对象的状态;对象还有操作,这些操作可以改变对象的状态,对象的操作也被称为对象的行为,Java通过为对象定义方法来描述对象的行为。

(2)对象实现了数据和操作的结合

对象把数据和对数据的操作封装成一个有机的整体,因此面向对象提供了更大的编程粒度,对程序员来说,更易于掌握和使用。

(3)对象是java程序的核心

Java里的对象具有唯一性,每个对象都有一个标识来引用它,如果某个对象失去了标识,这个对象将变成垃圾,只能等着系统垃圾回收机制来回收它。Java语言不允许直接访问对象,而是通过对对象的引用来操作对象。

类和对象

具有相同或相似性质的一组对象的抽象就是类,类是对一类事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的个体,因而也称为实例(instance)。

对象的抽象化是类,类的具体化就是对象,也可以说类的实例是对象。

类用来描述一系列对象,类概述每个对象应包括的数据,类概述每个对象的行为特征。因此,可以把类理解成某种概念、定义,它规定了某类对象所共同具有的数据和行为特征。

Java语言使用class关键字定义类,定义类时可使用成员变量来描述该类对象的数据,可使用方法来描述该类对象的行为特征。

➢ 一般→特殊关系:这种关系就是典型的继承关系,Java语言使用extends关键字来表示这种继承关系,Java的子类是一种特殊的父类。因此,这种一般→特殊的关系其实是一种“is a”关系。

➢ 整体→部分结构关系:也被称为组装结构,这是典型的组合关系,Java语言通过在一个类里保存另一个对象的引用来实现这种组合关系。因此,这种整体→部分结构关系其实是一种“has a”关系。

在这里插入图片描述

开发者定义了Java类之后,就可以使用new关键字来创建指定类的对象了,每个类可以创建任意多个对象,多个对象的成员变量值可以不同—这表现为不同对象的数据存在差异。

相关文章:

  • 基于多模态大模型的ATM全周期诊疗技术方案
  • LeetCode 第41~43题
  • ffmpeg函数简介(封装格式相关)
  • ecovadis评级的重要性,如何进行ecovadis评级,当下贸易环境有啥影响
  • HttpServletRequest是什么
  • 光度立体三维重建——光源标定
  • NO.74十六届蓝桥杯备战|搜索算法-BFS|马的遍历|迷宫|Catch That Cow|八数码难题(C++)
  • 前端配置husky,commit-lint导致的git提交错误:git xx@0.0.0 lint:lint-staged
  • 告别数据孤岛:Telegraf-IoTDB 实现一站式监控数据闭环
  • 392. 判断子序列
  • 013_File和IO流
  • 蓝桥云客--黑白皇后
  • fisco-bcos 关于服务bash status.sh启动runing 中但是5002端口监听不到,出错的问题
  • Dynamic Programming(LeetCode 740)
  • 串联所有单词的字串 --- 滑动窗口
  • Python 网络请求利器:requests 包详解与实战
  • nt!KeRemoveQueue 函数分析之加入队列后进入等待状态
  • Verilog学习-1.模块的结构
  • 图灵逆向——题六-倚天剑
  • 费马小定理
  • 如何做网站费用多少/百度总部在哪里
  • 开发网站公司价格/杭州seo按天计费
  • 什么网站做批发最便宜/seo怎么做排名
  • 公司网站建设费用估计/三只松鼠网络营销策略
  • 常州市建设项目审批网站/seo基础入门
  • 网站建设的原则有哪些/深圳关键词推广整站优化