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

【我与java的成长记】之面向对象的初步认识

在这里插入图片描述

系列文章目录

能看懂文字就能明白系列
C语言笔记传送门
🌟 个人主页:古德猫宁-

🌈 信念如阳光,照亮前行的每一步


文章目录

  • 系列文章目录
    • 🌈 *信念如阳光,照亮前行的每一步*
  • 前言
  • 一、什么是面向对象
    • 面向过程与面向对象
    • 什么是面向过程
    • 什么是面向对象
  • 二、类的定义和使用
    • 简单认识类
    • 类的定义格式
  • 三、类的实例化
    • 什么是实例化
    • 类和对象的说明


前言

本节目标:

  1. 了解什么是面向对象,与面向过程的区别
  2. 掌握类的定义方式以及对象的实例化
  3. 掌握类中的成员变量和成员方法的使用

一、什么是面向对象

面向过程与面向对象

大家都知道Java是一种面向对象的开发语言,那么什么是面向对象呢?

所谓面向对象,其实是指软件工程中的一类编程风格,面向对象是众多编程风格中的一种。除了面向对象,还有面向过程,指令式编程和函数式编程等。

什么是面向过程

面向过程(Procedure Oriented)是一种以过程为中心的编程思想,是一种自顶而下的编程模式。比如经典的C语言就属于这种面向过程的语言
在这种编程模式中,程序员需要把问题分解成一个个步骤,每个步骤用函数实现,依次调用即可。
基于面向过程进行的软件开发,其代码都是流程化的,可以明确地看出第一步做什么,第二步做什么(讲究的是一种过程)。这种方式的代码执行起来效率很高。
但是,面向过程同时存在代码重复性低,扩展能力差,后期维护难度较大等问题。

如下图:
在这里插入图片描述
这种方式注重的是洗衣服的过程,少了一个环节可能都不行,而且不同衣服洗的方式,时间长度,拧干方式都不同,处理起来就比较麻烦。如果将来要洗鞋子,那就是另一种方式。

什么是面向对象

面向对象(Object Oriented)的雏形最早出现在1960年的Simula语言中。当时的程序设计领域正面临一种危机:在软硬件逐渐复杂的情况下,软件如何得到良好的维护?
面向对象程序设计在某种程度上通过强调可重复性解决了这一问题。
目前,较为流行的面向对象语言主要与Java,C#,C++,Python,Ruby和PHP
简单来说,在面向对象的开发模式中,程序员将问题分解为一个个步骤,对每个步骤进行相应的抽象,形成对象,通过不同对象之间的调用,组合解决问题。
在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。

如下图:
在这里插入图片描述
总共有四个对象:人,衣服,洗衣粉,洗衣机
整个洗衣服的过程:人将衣服放进洗衣机,倒入洗衣粉,启动洗衣机,洗衣机就会完成洗衣过程并且甩干
整个过程主要是:人,衣服,洗衣粉,洗衣机四个对象之间交互完成的,人不需要关心洗衣机具体是如何洗衣服的,是如何甩干的

二、类的定义和使用

面向对象程序设计关注的是对象,而对象是现实中的实体,比如:洗衣机。但是洗衣机计算机并不认识,需要开发人员告诉计算机什么是洗衣机。
在这里插入图片描述
上图左侧就是对洗衣机简单的描述,该过程称为洗衣机对象(实体)进行抽象(对一个复杂事物的重新认识),但是这些简化的抽象结果计算机也不能识别,开发人员可以采用某种面向对象的编程语言来进行描述。

简单认识类

类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干啥),描述完成后计算机就可以识别了。

比如:洗衣机,它是一个品牌,在Java中可以将其看成是一个类别。
属性:产品品牌,型号,产品重量,外观尺寸,颜色…
功能:洗衣,烘干、定时…

类的定义格式

在Java中定义类时需要用到class关键字,具体语法如下:

//创建类
class Classname{field;//————字段(属性)或者成员变量method;//————行为或者成员方法
}

上面的代码中,class为定义类的关键字,Classname为类的名字,{}中为类的主体。
类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量(成员变量分为普通成员变量和静态成员变量)。方法主要说明类具有哪些功能,称为类的成员方法(成员方法也分为普通成员方法和静态成员方法)。

class WashMachine{public String brand;   // 品牌public String type;    // 型号public double weight;  // 重量public double length;  // 长public double width;  // 宽public double height;  // 高public String color;   // 颜色public void washClothes(){   // 洗衣服System.out.println("洗衣功能");}public void dryClothes(){    // 脱水System.out.println("脱水功能");}public void setTime(){       // 定时System.out.println("定时功能");}
}

注意:

  1. 一般一个文件当中只定义一个类
  2. main方法所在的类一般要使用public修饰(注意:Eclipse默认会在public修饰的类中找main方法)
  3. public修饰的类必须要和文件名相同
  4. 不要轻易去修改public修饰的类的名称
  5. 每一个类都会产生一个字节码文件
    在这里插入图片描述

三、类的实例化

什么是实例化

定义了一个类,就相当于在计算机定义了一种新的类型,与int,double类似,只不过int和double是Java语言自带的内置类型,而类是用户自定义的一个新的类型,比如上述的:person类,有了这些自定义的类型之后,就可以使用这些类来定义实例(或者称为对象)

用类类型创建对象的过程,称为类的实例化,在Java中采用new关键字,配合类名来实例化对象。

如下图:
在这里插入图片描述
注意事项:

  1. new关键字用于创建一个对象的实例
  2. 使用 .来访问对象中的属性和方法
  3. 同一个类可以创建多个对象

类和对象的说明

  1. 类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员
  2. 类是一种自定义的类型,可以用来定义变量
  3. 一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量
  4. 做个比方:类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间
    在这里插入图片描述

相关文章:

  • Adobe InDesign各版本安装指南
  • 如何进行镜像管理
  • React 调试
  • 脱壳后多dex文件合并进apk反编译
  • 如何使用Docker将.Net6项目部署到Linux服务器(二)
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • HttpURLConnection发送各种内容格式
  • mysql怎么只允许指定IP访问
  • 书生·浦语大模型实战营——两周带你玩转微调部署评测全链路
  • Jenkins的邮箱配置和插件下载
  • PHP数组定义和输出
  • 【深度学习-目标检测】03 - Faster R-CNN 论文学习与总结
  • Laravel框架使用phpstudy本地安装的composer用Laravel 安装器进行安装搭建
  • 【操作系统】探究进程奥秘:显示进程列表的解密与实战
  • 前端性能优化三十一:花裤衩模板webpack DllPlugin
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Angular 4.x 动态创建组件
  • Angular4 模板式表单用法以及验证
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Java编程基础24——递归练习
  • JAVA并发编程--1.基础概念
  • js
  • Swift 中的尾递归和蹦床
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 从tcpdump抓包看TCP/IP协议
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 关于for循环的简单归纳
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 基于游标的分页接口实现
  • 你真的知道 == 和 equals 的区别吗?
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 驱动程序原理
  • 如何利用MongoDB打造TOP榜小程序
  • 我这样减少了26.5M Java内存!
  • 一个完整Java Web项目背后的密码
  • 用 Swift 编写面向协议的视图
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 国内开源镜像站点
  • 函数计算新功能-----支持C#函数
  • #、%和$符号在OGNL表达式中经常出现
  • #DBA杂记1
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (ibm)Java 语言的 XPath API
  • (poj1.2.1)1970(筛选法模拟)
  • (差分)胡桃爱原石
  • (二十三)Flask之高频面试点
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (新)网络工程师考点串讲与真题详解