趣谈Java之——与对象的初次约会

2023-11-30 11:40
文章标签 java 对象 约会 初次 趣谈

本文主要是介绍趣谈Java之——与对象的初次约会,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 前言
    • 一、前世今生
      • 1、Java 是什么
      • 2、Java 有什么特点
      • 3、Java 的应用
    • 二、面向对象 VS 面向过程
    • 三、面向对象编程思想
    • 四、面向对象的基本特征
    • 五、Java 与面向对象
    • 六、为什么要使用面向对象编程
    • 写在最后


在这里插入图片描述

阅读文本大概需要 6.66 分钟。

前言

大家好,这是首发于公众号「蜗牛永动机」的趣谈 Java 系列教程。学习一门语言最好的办法,就是教会别人。在这个公众号,我会从最基础的教程开始写起,一方面是为了更好地复习巩固 Java 基础,另一方面也是慢慢进阶的过程。喜欢的朋友请点关注,每天一小步,一年后就是一大步。废话不多说,开始今天的文章。


一、前世今生


学习一门语言之前,最好的方式是先了解这门语言的前世今生和用途,它有什么特点。知己知彼,方能学好编程。

今天这篇文章没有一上来就直接从 Java 的基础语法开始,而是先介绍 Java 的前世今生和最核心的部分,即面向对象编程思想。这对我们后续的学习会有很大帮助,而不是一上来就先一顿猛如虎地骚操作,不管三七二十一直接三下五除二从基础语法搞起,都不知道这门语言是干嘛的,完全就是在盲目地学,很容易放弃。


1、Java 是什么


Java 是一门解释型、跨平台、面向对象的编程语言,是目前最流行的编程语言之一,1996 年由 Sun 公司发布第一个版本,也即 Java 1.0。截止目前 Java 迭代的版本如下:

在这里插入图片描述

2019 最新编程语言排名

在这里插入图片描述

这是比较权威的编程语言排行网站 TIOBE 上的最新排行,从上图中我们可以看到,排行前十的编程语言中,Java 依旧宝刀未老,仍然稳坐铁王座。


2、Java 有什么特点

在这里插入图片描述

3、Java 的应用


在这里插入图片描述

早期 Java 在桌面应用的开发是很广泛的,现在应用最广泛的主要还是在 Web 开发和大数据开发上,在 Android 方面的应用越来饱和,新人不建议再入 Android 的坑。


二、面向对象 VS 面向过程


在接触面向对象之前,我们首先回想下第一次接触 C 语言的情景,会发现在学习 C 语言的时候,在设计一个计算机的程序时,我们会根据解决问题的步骤,将程序组织为一系列的线性代码或函数,然后依次调用访问即可,这种编程的思想本质上就是面向过程的思想。

但是,面向对象的思想则有着本质的不同,思考方式不再是第一步先做什么,第二步再做什么。面向对象的思想要求我们面对一个问题时,从以下角度来思考问题:

  • 这个问题中可以抽象出哪些类和对象;
  • 这些类和对象具有哪些属性和方法;
  • 这些类之间存在哪些关系。

三、面向对象编程思想


面向对象编程思想的关键是抽象。它将现实世界中的事物理解为由属性和对这些属性实施的行为的统一体。这句话怎么理解呢?也就是说面向对象编程的思想主要如下:

  • 从现实世界中客观存在的事物(也即对象)出发来构造软件系统
  • 运用人类的自然思维方式来认识问题-如抽象、分类、继承、多态等
  • 根据这些事物的本质特点来抽象表示为系统中的类

那么,我们要如何抽象出一个类呢?主要有两个方面,一个是它的静态属性,一个则是它的动态属性。分别对应对象中的属性(或成员变量)方法

举例

假设现在有一个录音机类,那么我们该如何抽象出这个录音机类呢?一样的道理,还是从两方面入手:静态属性和动态属性。首先,录音机有哪些静态属性呢?有运转速度、运转方向和颜色等。有哪些动态属性(方法)呢?录音机可以播放,可以录音,同时也就可以快进或者快退,这些都是它的方法。

在这里插入图片描述

对于类来说,它描述了具有相同特性(属性)和行为(方法)的对象集合,是同种对象的集合与抽象。但是具体到某一个对象来说,它有没有相关的属性呢?当然是有的,比如从录音机这个类中实例化出来两个录音机:录音机 A 和录音机 B,它们都有运转速度、运转方向和颜色等属性,只是相应的值不一样。这样,根据这些属性的不同我们就可以区分出录音机 A 和 录音机 B。所以,可以根据属性来区分不同的对象

那么,是不是根据方法也可以区分不同的对象呢?答案是否定的。俗话说,甭管黑猫白猫,捉到老鼠就是好猫。现在问题来了,猫是一个类,现在有一只黑猫和白猫,假设定义一个方法叫捉老鼠(),而不管是黑猫也好,白猫也好,都会捉老鼠。那么,我们要怎么根据捉老鼠这个方法来区分黑猫和白猫呢?很显然区分不了。但如果按颜色分,那就是一目了然的事儿。

总结

1、类是一类事物(同种对象)的集合与抽象,类中定义了这一类对象所具有的静态属性和动态属性;

2、对象可以看成这个类的一个具体实例,也就是一个对象。换句话说,实例和对象指的是一回事;

3、根据类的属性可以区分这个类的不同对象,根据方法则不能区分。


四、面向对象的基本特征


面向对象主要有三个基本特征:封装、继承和多态。通常我们会认为抽象也是面向对象的基本特征之一,但其实抽象只是面向对象的重要部分,因为所有的编程语言都需要抽象。

封装: 将操作(方法)和操作所涉及的数据(成员变量)捆绑在一起,将对象的实现细节隐藏起来,然后通过公用的方法来暴露对象的功能。

继承: 一个新类继承原有类的基本特征,直接获得原有类的属性和方法。其中,新类也叫子类或派生类,原有类则叫父类或基类。

多态: 也叫动态绑定、后期绑定或运行时绑定。多态主要指同一名称的方法可以有多种不同的功能或相同的接口可以有多种实现方法。


五、Java 与面向对象


1、一切皆对象,对象是 Java 程序的核心;

2、静态属性(成员变量) + 动态属性(方法)= 类定义,也就是说对象可以看成静态属性和动态属性的封装体;

3、每个对象都拥有其类型。类是用来创建同一类型的对象的模板,在一个类中定义了该类所具有的成员变量和方法;

从前面知识点的学习中我们知道了在 Java 中类和对象是分不开的。要向一个对象「发送消息」,我们得先定义一个类,然后才有对象。紧接着我们可以在类中定义这个类的成员变量和方法,当向这个对象发送请求(消息)时,与之关联的方法就会被调用。

那么在 Java 中要怎么抽象出一个类并写成代码呢?无非就是将一类事物抽象成一个类,然后在这个类中写好它的成员变量和方法。

比如,现在我们要封装一个篮球,抽象出篮球这个类,在 Java 中要怎么写代码呢?代码如下:

    /*** Java 里面将一类事物封装成一个类,首先得写 class 来定义这个类,名字可以* 自取,遵循驼峰原则,但类的首字母要大写。这里命名为 Basketball*/public class Basketball {/*** 定义类的静态属性(成员变量)。比如这里,篮球这个类的静态属性有颜色、* 形状和重量等。定义的时候需要指明属性的类型,比如重量这个属性,类型* 为 float*/String color; // 定义属性:篮球的颜色String shape; // 定义颜色:篮球的形状float weight; // 定义属性:篮球的重量/*** 上面定义了篮球这个类的静态属性,接下来定义它的方法。比如* 打气这个方法,定义为 pump()*/void pump() {System.out.println("篮球已经充满气了!");}public static void main(String[] args) {Basketball b = new Basketball(); // 用 new 关键字创建一个篮球b.pump(); // 让这个篮球去调用打气的方法,给篮球打气}}

六、为什么要使用面向对象编程


目的: 提高软件开发的可重用性、可维护性和可扩展性

传统的软件开发主要是面向过程的,这意味着方法和属性一般是分开的,当软件系统比较大的时候想要复用相应的模块就很麻烦,并且复用的层次基本也仅限于方法层面。而面向对象则不同,它将对象的方法和属性封装在一个类中,这让我们可以直接复用方法和属性的统一整体。换句话说,我们可以直接对一个类进行复用,这大大提高了软件开发的可重用性。同时这意味着我们的代码更易于维护和扩展。


写在最后


至此「趣谈 Java 之——与对象的初次约会」篇就已结束,接下来给自己三分钟的时间回想一下,今天这篇都学习到了什么。

如果你按我说的去做,你会发现你只能回忆起一些内容,很难把全部的知识都记住。这是很正常的情况,所以需要温故而知新。最后,我把这篇文章的知识点整理成思维导图送给大家。

在这里插入图片描述


推荐阅读:

全网最全的编程学习资源,PDF 电子书大合集

欢迎关注我的公众号「蜗牛永动机」,回复 1024 免费获取 5G 编程学习资源~

这篇关于趣谈Java之——与对象的初次约会的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/436894

相关文章

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

java中long的一些常见用法

《java中long的一些常见用法》在Java中,long是一种基本数据类型,用于表示长整型数值,接下来通过本文给大家介绍java中long的一些常见用法,感兴趣的朋友一起看看吧... 在Java中,long是一种基本数据类型,用于表示长整型数值。它的取值范围比int更大,从-922337203685477

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过