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

系列文章目录

能看懂文字就能明白系列
C语言笔记传送门

🌟 个人主页古德猫宁-

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


文章目录


前言

本节目标:

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

一、什么是面向对象

面向过程与面向对象

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

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

什么是面向过程

面向过程(Procedure Oriented)是一种以过程为中心的编程思想,是一种自顶而下的编程模式。比如经典的C语言就属于这种面向过程的语言

在这种编程模式中,程序员需要把问题分解成一个个步骤,每个步骤用函数实现,依次调用即可。

基于面向过程进行的软件开发,其代码都是流程化的,可以明确地看出第一步做什么,第二步做什么(讲究的是一种过程)。这种方式的代码执行起来效率很高。

但是,面向过程同时存在代码重复性低,扩展能力差,后期维护难度较大等问题。

如下图:

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

什么是面向对象

面向对象(Object Oriented)的雏形最早出现在1960年的Simula语言中。当时的程序设计领域正面临一种危机:在软硬件逐渐复杂的情况下,软件如何得到良好的维护?

面向对象程序设计在某种程度上通过强调可重复性解决了这一问题。

目前,较为流行的面向对象语言主要与Java,C#,C++,Python,Ruby和PHP

简单来说,在面向对象的开发模式中,程序员将问题分解为一个个步骤,对每个步骤进行相应的抽象,形成对象 ,通过不同对象之间的调用,组合解决问题。

在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。

如下图:

总共有四个对象:人,衣服,洗衣粉,洗衣机

整个洗衣服的过程:人将衣服放进洗衣机,倒入洗衣粉,启动洗衣机,洗衣机就会完成洗衣过程并且甩干

整个过程主要是:人,衣服,洗衣粉,洗衣机四个对象之间交互完成的,人不需要关心洗衣机具体是如何洗衣服的,是如何甩干的

二、类的定义和使用

面向对象程序设计关注的是对象,而对象是现实中的实体,比如:洗衣机。但是洗衣机计算机并不认识,需要开发人员告诉计算机什么是洗衣机。

上图左侧就是对洗衣机简单的描述,该过程称为洗衣机对象(实体)进行抽象(对一个复杂事物的重新认识),但是这些简化的抽象结果计算机也不能识别,开发人员可以采用某种面向对象的编程语言来进行描述。

简单认识类

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

比如:洗衣机,它是一个品牌,在Java中可以将其看成是一个类别。

属性:产品品牌,型号,产品重量,外观尺寸,颜色...

功能:洗衣,烘干、定时...

类的定义格式

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

java 复制代码
//创建类
class Classname{
    field;//------------字段(属性)或者成员变量
    method;//------------行为或者成员方法
}

上面的代码中,class为定义类的关键字,Classname为类的名字,{}中为类的主体。

类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量(成员变量分为普通成员变量和静态成员变量)。方法主要说明类具有哪些功能,称为类的成员方法(成员方法也分为普通成员方法和静态成员方法)。

java 复制代码
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. 做个比方:类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间

    上图左边为栈区,右边为堆区
相关推荐
笑鸿的学习笔记10 分钟前
qt-C++语法笔记之Stretch与Spacer的关系分析
c++·笔记·qt
留不住丨晚霞14 分钟前
说说SpringBoot常用的注解?
java·开发语言
华科云商xiao徐20 分钟前
Java多线程爬虫动态线程管理实现
java·爬虫·数据挖掘
hardStudy_h24 分钟前
C++——内联函数与Lambda表达式
开发语言·jvm·c++
柒七爱吃麻辣烫29 分钟前
八股文系列-----SpringBoot自动配置的流程
java·spring boot·rpc
M1A134 分钟前
Java 面试系列第一弹:基础问题大盘点
java·后端·mysql
发仔12334 分钟前
Dubbo介绍及示例用法
java·dubbo
goxingman42 分钟前
关于使用idea打包的时候报错,Maven提示乱码java: �Ҳ�������
java·maven·intellij-idea
艾莉丝努力练剑1 小时前
【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(三)
c语言·开发语言·数据结构·学习·算法
巴伦是只猫1 小时前
【机器学习笔记Ⅰ】3 代价函数
人工智能·笔记·机器学习