JAVA 从入门到起飞 day8 面向对象01

1.面向对象的介绍

老师的讲解:

 面向:就相当于拿找

对象:能干活的东西

面向对象编程:拿东西过来做对应的事

我的理解:

 让我们通过一个比喻来了解 JAVA 中的面向对象思想。

想象一下你正在建一座房子:

1. **类(Class)- 房子的蓝图**


   
   在建造房子之前,你需要有一份详细的蓝图,指明了房子的结构和设计。在 JAVA 编程中,类就好比这样的一份蓝图,其中定义了对象的属性和方法(即对象可以做什么,有什么特点)。

2. **对象(Object)- 根据蓝图建造的房子**
   
   根据蓝图你可以建造多座结构相同但独立的房子。同理,在 JAVA 中,你可以根据一个类创建多个对象,它们都有类中定义的属性和方法,但每个对象可以有自己独特的属性值。

3. **属性(Attribute)- 房子的特性**
   
   每座房子都有自己的特性,比如卧室的数量、房子的颜色等。在 JAVA 中,对象的属性就是用来描述对象的特性的,例如一个`Person`类可以有`name`和`age`属性。

4. **方法(Method)- 房子的功能**
   
   一个房子有多种功能,比如可以开窗通风,可以开门出入。在 JAVA 中,对象的方法就是定义对象可以执行什么样的操作。

5. **封装(Encapsulation)- 房子的私密性**
   
   房子有一些区域是私人的,不对外公开,比如你可能不希望任何人都可以进入你的卧室。JAVA 中的封装就是这样一个概念,可以限制对某些属性或方法的访问,保证对象的内部状态的安全。

6. **继承(Inheritance)- 房屋样式的传承**
   
   如果你有一个已经设计好的房子蓝图,你可以在这个基础上添加更多的特性,比如添加一个花园或者泳池。JAVA 中的继承允许你在一个已存在的类的基础上创建一个新的类,继承原来类的属性和方法,并可以添加新的属性和方法或重写原有的方法。

7. **多态(Polymorphism)- 房子的多功能性**
   
   一间房子可以用作多种用途,比如可以作为居住用房,也可以改造成办公室。JAVA 中的多态允许一个方法有多种实现方式,具体执行哪种实现可以在运行时动态决定。

为什么用面向对象编程?

JAVA 采用面向对象编程(Object-Oriented Programming, OOP)原因可以从几个方面来解析:

1. **代码重用和模块化**:
   通过使用类和对象,JAVA 程序员可以更容易地重用代码。类可以作为模块来创建,而后可以在多个项目或程序中重复使用,这有助于减少代码重复和提高代码的可重用性。

2. **更容易维护和扩展**:
   OOP 允许程序员以更结构化和模块化的方式来组织代码。这意味着当需要修改或扩展程序时,可以更容易地识别和修改相关的部分,而不是整个代码基础。

3. **更好的问题域建模**:
   OOP 允许程序员创建对象,这些对象可以很好地模拟现实世界中的实体和关系。这有助于更准确地模拟和解决实际问题,因为可以直接将现实世界的概念和结构映射到程序中。

4. **封装提高安全性**:
   通过封装,JAVA 程序可以隐藏对象内部的状态,并只通过定义好的接口来与对象交互。这有助于保护对象的内部状态不被外部代码错误地访问或修改,提高了代码的安全性和稳定性。

5. **更好的代码可读性和组织结构**:
   OOP 提倡将相关的属性和方法组织在一个类中,这样有助于提高代码的可读性和清晰度,使得代码结构更为清晰和有组织。

6. **灵活性和动态性**:
   通过使用多态和继承,JAVA 可以创建更灵活和动态的程序。多态允许程序在运行时决定使用哪个方法,而继承则允许程序员创建新的类,复用和扩展现有类的功能。

7. **推动了设计模式的发展**:
   OOP 也促进了设计模式的发展。设计模式是解决常见编程问题的最佳实践和模式,许多设计模式是基于 OOP 原则和概念创建的,可以帮助创建更健壮、可维护和可扩展的程序。

基于以上原因,JAVA 采用了面向对象编程模式,使其成为了一个强大、灵活且适用于多种应用场景的编程语言。

老师的解释:

我们平时在处理问题的时候无论是洗衣还是扫地还是聊天都要找到对应的工具。 

 面向对象的学习重点是什么?

老师的解释:

1.就是学习获取已有对象并使用

2.学习自己设计对象并使用:

我的理解:

在 JAVA 中学习面向对象编程(OOP):

1. **类和对象**:
    - **类的定义与实例化**:理解类是什么,如何定义类,以及如何创建类的实例(对象)。
    - **对象的属性与方法**:理解对象的属性(数据成员)和方法(函数)如何定义和使用。

2. **封装**:
    - **访问修饰符**:理解不同的访问修饰符(private, public, protected)如何控制类成员的访问权限。
    - **构造方法与Getter/Setter方法**:理解如何通过构造方法初始化对象和通过getter和setter方法访问和修改对象的属性。

3. **继承**:
    - **基础和派生类**:理解继承的概念,包括如何创建基类和派生类。
    - **方法重写**:理解如何在派生类中重写基类的方法以实现新的功能。

4. **多态**:
    - **方法重载**:理解方法重载的概念及其用途。
    - **动态绑定**:理解动态绑定和如何通过它实现多态。

5. **抽象类与接口**:
    - **抽象类**:理解抽象类的概念及其用途。
    - **接口**:理解接口的概念和如何使用它来实现多重继承和定义契约。

6. **异常处理**:
    - **异常类型**:理解JAVA中不同类型的异常(checked和unchecked)。
    - **异常处理**:理解如何使用try-catch块和throw/throws关键字进行异常处理。

7. **设计模式**:
    - **常用设计模式**:学习和理解一些常用的OOP设计模式,如单例模式,工厂模式,观察者模式等。
   
8. **实际项目练习**:
    - **项目实战**:通过实际项目练习来加深对OOP概念的理解和应用。

9. **代码质量和最佳实践**:
    - **代码重用和模块化**:理解如何编写可重用和模块化的代码。
    - **代码清晰与注释**:学习如何编写清晰的代码并正确地使用注释来文档化代码。

集中精力学习和理解这些重点将帮助你掌握JAVA中的面向对象编程,并成为一个更加熟练和高效的JAVA程序员。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter系列进阶-获取图片验证码(4)

安装工具 通过ocrserver工具识别图片验证码,解压后 .exe双击启动即可。 jmeter中使用 (1)HTTP请求获取验证码 (2)在获取验证码图片的接口下面添加监听器》保存响应到文件;如下图: &#x…

Qt/C++音视频开发51-推流到各种流媒体服务程序

一、前言 最近将推流程序完善了很多功能,尤其是增加了对多种流媒体服务程序的支持,目前支持mediamtx、LiveQing、EasyDarwin、nginx-rtmp、ZLMediaKit、srs、ABLMediaServer等,其中经过大量的对比测试,个人比较建议使用mediamtx和ZLMediaKit,因为这两者支持的格式众多,不…

【Linux环境】编译器 gcc/g++的使用

​👻内容专栏: Linux操作系统基础 🐨本文概括: 预处理、编译、汇编、链接、动静态库、gcc选项等。 🐼本文作者: 阿四啊 🐸发布时间:2023.9.13 背景知识 预处理(进行宏替换…

Mobpush与A/B测试:覆盖多应用场景下的精细化运营神器

在信息爆炸的移动应用领域,实现长效稳定的用户增长的关键在于能够和用户建立互信、持久的联系。而优质的推送内容不仅可以提高用户参与度和留存率,还有助于增加收入、改善用户体验,以及建立强大的用户社区。但千人一面的推送很难同时满足不同…

算法|Day51 单调栈2

LeetCode 503- 下一个更大元素 II 题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目描述:给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 num…

Jmx协议远程连接java服务器

注意:本例里,我用的是jdk17 通常用jdk自带的jconsole,或者想要功能强大点的使用visualVM 需要java服务器在启动的时候加上以下参数 -Dcom.sun.management.jmxremote 启用jxm远程连接-Djava.rmi.server.hostname10.1.3.99 指定jxm监听地址&…

第一百四十天学习记录:工作相关:Qt5.14.2的安装

最近一段时间被新项目搞得心力憔悴。 加上需要调用一个同事的OpenCV库一直报错,后面发现是Qt版本不兼容的问题。 在尝试了在线安装Qt无果后,重新安装Qt,顺便回顾一下Qt的安装过程。 毕竟上一次安装Qt还是在2019年……之后的这4年工作电脑和家…

记录我在cmd里使用pip命令下载Python的包时碰见的两个错误

1、pip时报错:Defaulting to user installation because normal site-packages is not writeable 解决方法:在 pip install 后面加上 --user 即可,这个是权限不足引发的问题。如果还是不行则用镜像源,然后别忘了在镜像源的“inst…

欧科云链与HashKey Exchange达成合作,助力香港虚拟资产合规化

继8月10日 欧科云链 与 华为云 达成合作之后, 今天,欧科云链 又与 Hashkey Exchange 共同宣布正式达成合作! 这次与Hashkey达成合作,双方又将在Web3行业中谱写怎样的故事? 9月6日,欧科云链控股有限公司&…

利用优化算法提高爬虫任务调度效率

在大规模数据采集的场景中,高效的任务调度是关键之一。通过利用优化算法,我们可以提高爬虫任务的调度效率,加快数据采集速度,并有效利用资源。本文将为您介绍如何利用优化算法来优化爬虫任务调度,实现高效的批量采集。…

Buuctf web [SUCTF 2019]EasySQL

又是一道考察sql注入的题 1、起手试探 (主要看看输入什么内容有正确的回显) 1 0 1 1 # 发现只有在输入1的情况下有正常的回显,输入0或其他字符都没有回显,所以这题就要尝试堆叠注入了。 ps:(如果想尝试其他注入方法…

leetcode 2366. Minimum Replacements to Sort the Array(数组排序的最少替换数)

数组nums中的元素nums[ i ] 可以替换为任意两个数a, b, 前提是ab nums[ i ]. 把数组nums变为升序&#xff08;可以有相等&#xff09;数组需要多少次替换。 思路&#xff1a; 排序数组是左边的元素<右边元素&#xff0c;以右边元素为边界。 所以从右到左遍历数组&#xf…

PY32F003F18之定时器中断

PY32F003F18定时器有TIM1&#xff0c;TIM3&#xff0c;TIM14&#xff0c;TIM16和TIM17。其中TIM1为高级定时器&#xff0c;其它为通用定时器。见下表&#xff1a; 一、PY32F003F18定时器的工作模式&#xff1a; 1、边沿对齐模式 计数器工作在"边沿对齐模式" 设置&q…

List与ArrayList

目录 一、List及其使用 1.1 List的概念 1.2 常见接口的介绍 1.3 List的使用 二、线性表和顺序表 2.1 线性表 2.2 顺序表 三、ArrayList介绍 四、ArrayList的使用 4.1 ArrayList构造 4.2 ArrayList的常用方法 4.3 ArrayList的遍历 4.4 ArrayList的扩容机制 五、ArrayList的具…

字节一面:如何实现单行/多行文本溢出的省略样式?

前言 最近博主在字节面试中遇到这样一个面试题&#xff0c;这个问题也是前端面试的高频问题&#xff0c;作为一名前端开发工程师&#xff0c;css是我们的必备技能&#xff0c;文本溢出问题也是我们经常遇到的问题&#xff0c;我们不仅只是处理这种情况&#xff0c;还要考虑他的…

024 - STM32学习笔记 - 液晶屏控制(一) - LTDC与DMA2D初始

024- STM32学习笔记 - LTDC控制液晶屏 在学习如何控制液晶屏之前&#xff0c;先了解一下显示屏的分类&#xff0c;按照目前市场上存在的各种屏幕材质&#xff0c;主要分为CRT阴极射线管显示屏、LCD液晶显示屏、LED显示屏、OLED显示屏&#xff0c;在F429的开发板上&#xff0c;…

【多线程】线程池 详解

线程池 详解 1. 线程池是什么2. 标准库中的线程池3. 实现线程池4. 面试题 1. 线程池是什么 虽然线程的创建和销毁的开销比较小, 但还是有的, 如果频繁的创建和销毁线程, 开销还是比较大的.解决: 线程池或者协程, 本文主讲线程池. 线程池: 把线程提前创建好, 放到池子里, 后面…

下载配置 maven并在 idea 上应用

目录 一 maven 定义 二 Maven特点 三 Maven仓库 四 安装配置maven 步骤一:准备安装包,解压 步骤二:配置maven的环境变量 步骤三:测试maven的环境变量是否配置成功 步骤四:配置maven本地仓库 步骤五:阿里云、腾讯镜像配置 步骤六:全局配置idea的maven路径 步骤七:创建…

命令行git联网失败,但是实际可以联网

最近下载代码的时候发现总是告诉我连不上github的网页&#xff0c;但是我自己通过浏览器又可以上网&#xff0c;找了半天发现这个方法可以。 记录下这个代理 打开git bash 执行以下命令&#xff1a; git config --global http.proxy http://127.0.0.1:7890 git config --glob…

Python 图形化界面基础篇:添加复选框( Checkbutton )到 Tkinter 窗口

Python 图形化界面基础篇&#xff1a;添加复选框&#xff08; Checkbutton &#xff09;到 Tkinter 窗口 引言什么是 Tkinter 复选框&#xff08; Checkbutton &#xff09;&#xff1f;步骤1&#xff1a;导入 Tkinter 模块步骤2&#xff1a;创建 Tkinter 窗口步骤3&#xff1a…