面向对象(基础)---面向对象编程概述、Java语言的基本元素:类和对象

学习面向对象内容的三条主线:

①Java类及类的成员:(重点)属性、方法、构造器;(熟悉)代码块、内部类

②面向对象的特征:封装、继承、多态、(抽象)

③其他关键字的使用:this、super、package、import、static、final、interface、abstract等

一、面向对象编程概述

1、程序设计的思路

面向对象,是软件开发中的的一类编程风格、开发范式。除了面向对象,还有面向过程、指令式编程和函数式编程。在所有的编程范式中,我们接触最多的还是面向过程和面向对象两种。

早期先是有面向过程思想,随着软件规模的扩大,问题复杂性的提高,面向过程的弊端越来越明显,出现了面向对象思想并成为目前主流的方式。

①面向过程的程序设计思想(Process-Oriented Programming),简称POP,关注的焦点是过程:过程就是操作数据的步骤。如果某个过程的实现代码重复出现,那么就可以把这个过程抽取为一个函数。这样就可以大大简化冗余代码,便于维护。

典型的语言:C语言

代码结构:以函数为组织单位

是一种“执行者思维”,适合解决简单问题。扩展能力差、后期维护难度较大

②面向对象的程序设计思想(Object Oriented Programming),简称OOP

关注的焦点是类:在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,用类来表示。

典型的语言:Java、C#、C++、Python、Ruby和PHP等

代码结构:以类为组织单位。每种事物都具备自己的属性和行为/功能

是一种“设计者思维”,适合解决复杂问题。代码扩展性强、可维护性高。

2、由实际问题考虑如何设计程序

思考1:如何开车?

面向过程思考问题时,我们首先思考“怎么按步骤实现?”并将步骤对应成方法,一步一步,最终完成。这个适合简单任务,不需要过多协作的情况。针对如何开车,可以列出步骤:

面向过程适合简单、不需要协作的事务,重点关注如何执行。

思考2:如何造车?

造车太复杂,需要很多协作才能完成。此时我们思考的是“车怎么设计?”,而不是“怎么按特定步骤造车的问题”。这就是思维方式的转变,前者就是面向对象思想。所以,面向对象(Oriented-Object)思想更契合人的思维模式。

用面向对象思想思考“如何设计车”:

自然地,我们就会从“车由什么组成”开始思考。发现,车由如下结构组成:

我们找轮胎厂完成制造轮胎的步骤,发动机厂完成制造发动机的步骤。。。这样,大家可以同时进行车的制造,最终进行组装,大大提高了效率。但是,具体到轮胎厂的一个流水线操作,仍然是有步骤的,还是离不开面向过程思维!

因此,面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。但是,具体到实现部分的微观操作(就是一个个方法),仍然需要面向过程的思路去处理。注意:

①我们千万不要把面向过程和面向对象对立起来。他们是相辅相成的。

②面向对象离不开面向过程!

类比举例1:

当需求单一,或者简单时,我们一步步去操作没问题,并且效率也挺高。可随着需求的更改,功能的增多,发现需要面对的每一个步骤很麻烦了,这时候就开始思索,能不能把这些步骤和功能进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起。这样结构就清晰了很多。用的时候,找到对应的类就可以了。这就是面向对象的思想。

类比举例2:人把大象装进冰箱

面向过程:

1.打开冰箱

2.把大象装进去

3.把冰箱门关住

面向对象:

二、Java语言的基本元素:类和对象

1、引入

人认识世界,其实就是面向对象的。比如,我们认识一下美人鱼(都没见过)

经过“仔细学习”,发现美人鱼通常具备一些特征

①女孩

②有鱼尾

③美丽

这个总结的过程,其实就是抽象化的过程。抽象出来的美人鱼的特征,可以归纳为一个美人鱼类。而图片中的都是这个类呈现出来的具体的对象。

2、类和对象概述

类(Class)和对象(Object)是面向对象的核心概念

①:什么是类

类:具有相同特征的食物的抽象描述,是抽象的、概念上的定义

②:什么是对象

对象:实际存在的该类事物的每个个体,是具体的,因而也称为实例(instance)

可以理解为:类-》抽象概念的人;对象-》实实在在的某个人

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/363970.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

stm32--simulink开发之--timer的学习,硬件输入中断,触发事件,STM32通用定时器之输出比较模式与PWM模式(重要理解)

下面三个模块,一个比一个高级,当然使用是越来越简单 STM32F4xx系列控制器有2个高级控制定时器、10个通用定时器和2个基本定时器(推荐学习) 1,第一个模块:Timer 浅层理解:计数,不停的触发 Starts timer co…

Servlet简述

Servlet是动态web资源开发技术,其实就是一个接口,将来定义Servlet实现类时,都必须实现该接口,并让web服务器运行Servlet 1.快速入门 使用注释配置访问路径在Servlet3.0之后应用,在此之前都是使用xml配置文件来配置的。…

零基础怎么学鸿蒙开发?

对于零基础的学习者来说,掌握鸿蒙开发不仅是迈向新技术的第一步,更是开拓职业道路的重要机遇。随着鸿蒙系统在各行各业的应用逐渐扩展,对于掌握这一项技术的开发人员需求也随之增长。下文将为大家提供针对零基础学习鸿蒙开发的逻辑&#xff0…

粒子群优化算法

PSO算法 粒子群算法(Particle,Swarm Optimization,PSO)由Kennedy和Eberhart于1995年提出,算法模仿鸟群觅食行为对优化问题进行求解。 粒子群算法中每个粒子包含位置和速度两个属性,其中,位置代表了待求问题的一个候选…

2024年最强网络安全学习路线,详细到直接上清华的教材!

关键词:网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 首先咱们聊聊,学习网络安全方向通常会有哪些问题 前排提示:文末有CSDN官方认证Python入门资料包! 1、打基础时间太长 学基础花费很长时间,光语言…

mysql 慢查询调优实战

目录 异常现象:进行复现:寻找原因:解决办法:办法一:指定执行索引办法二:先按二级索引里字段排序,再按id排序办法三:取消排序 最终方案:复盘: 异常现象&#x…

基于springboot+vue的校园赛事资讯网站(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

搜维尔科技:【简报】元宇宙数字人赛道,优秀作品《星云时报》赏析

AI 对人们来说是一种新产业,而人们对于它未来会面临的议题仍有许多疑虑,因此我们用新闻报导的方式列举一些有趣且具有可能性的标题,希望能让 大家了解 AI 在未来可能会带来什么问题,以及我们应该采取的态度。 学校: 新…

C++(17)——list的模拟实现

前面的文章中,介绍了,的模拟实现,本篇文章将介绍对于的模拟实现。 目录 1. list的基本结构: 2. list功能实现:尾部插入元素: 3. list迭代器的实现: 4. list功能实现:在任意位置前…

vue2 导入使用vue-codemirror详解

目录 vue2 导入使用vue-codemirror详解1 介绍2 安装使用2.1 安装 vue-codemirror2.2 使用 codemirror2.2.1 引入 3 配置详情3.1 语言模式配置3.2 自动高度设置3.4 主题配置 4 总结 vue2 导入使用vue-codemirror详解 1 介绍 vue-codemirror是一个基于Vue的代码在线编辑器组件&…

【jenkins】主从机制及添加Slave节点操作

一、master-slave 日常构建Jenkins任务中,会经常出现下面的情况: 自动化测试需要消耗大量的 CPU 和内存资源,如果服务器上还有其他的服务,可能会造成卡顿或者宕机这样的情况; Jenkins 平台上除了这个项目&#xff0c…

把成绩私发给家长

与家长保持及时、有效的沟通对于学生的成长至关重要。但有时候,我会选择将学生的成绩私发给家长,而不是在公共场合公布。这样做有以下几个原因。 保护学生的隐私。每个学生都拥有自己的个人信息,这包括学习成绩。在公共场合公布成绩&#xf…

Sqoop数据迁移工具

概述 Apache Sqoop(SQL-to-Hadoop)项目旨在协助RDBMS与Hadoop之间进行高效的大数据交流。用户可以在 Sqoop 的帮助下,轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase和Hive)中;同时也可以把数据从 Hadoop 系统…

【计算机二级考试C语言】C递归

目录 C 递归 数的阶乘 实例 斐波那契数列 实例 C 递归 递归指的是在函数的定义中使用函数自身的方法。 举个例子: 从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?"从…

都 2024 年了!程序员的到底出路在哪里!?继续卷技术?晋升管理层?还是转业?

都 2024 年了!程序员的到底出路在哪里!?继续卷技术?晋升管理层?还是转业? 1)程序员的难处2)程序员专业方向3)大数据3.1.大数据开发涉及到哪些技术3.2.大数据开发涉及到的…

VxTerm:SSH工具中的中文显示和乱码时的相关信息和一些基本的知识

当我们写的程序含有控制台(Console)输出时,如果输入内容包含中文时,我们一般需要知道下面的信息,才能正确的搞清楚怎么处理中文显示的问题: 1、实际程序或文件中的实际编码: Linux下的应用程序和文本文件,…

2024年最佳的免费UI设计工具推荐

随着用户界面设计行业的蓬勃发展,越来越多的设计师加入到用户界面设计中来。选择一个方便的用户界面设计工具尤为重要!除了传统的用户界面设计工具外,在线用户界面设计工具也受到越来越多设计师的青睐。这种不受时间、地点和计算机配置限制的…

centos7.6安装Docker详细步骤(无坑版教程)

一、安装前必读 在安装 Docker 之前,先说一下配置,我这里是Centos7 Linux 内核:官方建议 3.10 以上,3.8以上貌似也可。 注意:本文的命令使用的是 root 用户登录执行,不是 root 的话所有命令前面要加 sudo…

uniapp 使用canvas 画海报,有手粘贴即可用(拆成组件了,看后面)

1.直接使用 html部分 <view click"doposter">下载海报</view> <canvas canvas-id"myCanvas" type2d style"width: 370px; height: 550px;opcity:0;position: fixed;z-index:-1;" id"myCanvas" />js 部分 drawBac…

【数据结构】(三)树Tree

目录 1、基本概念 2、二叉树Binary Tree 3、树、森林与二叉树的转换 4、赫夫曼树Huffman Tree与赫夫曼编码Huffman Coding 1、基本概念 &#xff08;1&#xff09;树&#xff08;Tree&#xff09;是 n&#xff08;n ≥\geq 1&#xff09;个节点的有限集&#xff0c;n 0时称…