【JavaSE】基础笔记 - 类和对象(上)

news2024/11/28 4:35:40

 

目录

1、面向对象的初步认知

1.1、什么是面向对象

1.2、面向对象与面向过程

 2. 类定义和使用

2.1、简单认识类

2.2、类的定义格式

2.3、自定义类举例说明

2.3.1、定义一个狗类 

2.3.2、定义一个学生类

3、类的实例化

3.1、什么是实例化

3.2、类和对象的说明

 

1、面向对象的初步认知

1.1、什么是面向对象

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

1.2、面向对象与面向过程

举例说明:

1、传统洗衣服的过程:

传统的方式:注重的是洗衣服的过程,少了一个环节可能都不行

而且不同衣服洗的方式,时间长度,拧干方式都不同,处理起来就比较麻烦。如果将来要洗鞋子,那就是另一种放方式。按照该种方式来写代码,将来扩展或者维护起来会比较麻烦

 2、现代洗衣服过程:

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

整个洗衣服的过程:人将衣服放到洗衣机,倒入洗衣服,启动洗衣机,洗衣机就会完成洗衣服过程并且甩干,整个过程主要是通过:人、衣服、洗衣粉、洗衣机四个对象之间交互完成的,人不需要关心洗衣机具体是如何洗衣服的,如果甩干的。

以面向对象方式来进行处理,就不关注洗衣服的过程,具体洗衣机是怎么来洗衣服,如何来甩干的,用户不用去关心,只需要将衣服放进洗衣机,倒入洗衣粉,启动开关即可,通过对象之间的交互来完成的。

注意:面向过程和面相对象并不是一门语言,而是解决问题的方法,没有那个好坏之分,都有其专门的应用场景。

 2. 类定义和使用

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

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

2.1、简单认识类

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

2.2、类的定义格式

在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("定时功能");
        }
    }

采用Java语言将洗衣机类在计算机中定义完成,经过javac编译之后形成.class文件,在JVM的基础上计算机就可以识别了。 

2.3、自定义类举例说明

2.3.1、定义一个狗类 

    class PetDog {
        public String name;//名字
        public String color;//颜色
        // 狗的属性
        public void barks() {
            System.out.println(name + ": 旺旺旺~~~");
        }
        // 狗的行为
        public void wag() {
            System.out.println(name + ": 摇尾巴~~~");
        }
    }

2.3.2、定义一个学生类

 

    public class Student{
        public String name;
        public String gender;
        public short age;
        public double score;
        public void DoClass(){}
        public void DoHomework(){}
        public void Exam(){}
    }

3、类的实例化

3.1、什么是实例化

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

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

    public class Main{
        public static void main(String[] args) {
            PetDog dogh = new PetDog(); //通过new实例化对象
            dogh.name = "阿黄";
            dogh.color = "黑黄";
            dogh.barks();
            dogh.wag();
            PetDog dogs = new PetDog();
            dogs.name = "阿黄";
            dogs.color = "黑黄";
            dogs.barks();
            dogs.wag();
        }
    }

 输出结果:

阿黄: 旺旺旺~~~
阿黄: 摇尾巴~~~
赛虎: 旺旺旺~~~
赛虎: 摇尾巴~~~

3.2、类和对象的说明

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

 

 

博主推荐:

 【LeetCode力扣】42. 接雨水-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/zzzzzhxxx/article/details/134104222?spm=1001.2014.3001.5502

【LeetCode力扣】189 53 轮转数组 | 最大子数组和-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/zzzzzhxxx/article/details/134095703?spm=1001.2014.3001.5502

【Java】JDK 21中的虚拟线程以及其他新特性-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/zzzzzhxxx/article/details/133986696?spm=1001.2014.3001.5502 

如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

 

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

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

相关文章

MySQL性能优化的最佳20条经验

概述 关于数据库的性能,这并不只是DBA才需要担心的事。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。下面讲下MySQL性能优化的一些点。 1. 为查询缓存优化你的查询 大多数的MySQL服务器…

Python基础入门例程47-NP47 牛牛的绩点(条件语句)

最近的博文: Python基础入门例程46-NP46 菜品的价格(条件语句)-CSDN博客 Python基础入门例程45-NP45 禁止重复注册(条件语句)-CSDN博客 Python基础入门例程44-NP44 判断列表是否为空(条件语句&#xff0…

ElasticSearch 实现 全文检索 支持(PDF、TXT、Word、HTML等文件)通过 ingest-attachment 插件实现 文档的检索

一、Attachment 介绍 Attachment 插件是 Elasticsearch 中的一种插件,允许将各种二进制文件(如PDF、Word文档等)以及它们的内容索引到 Elasticsearch 中。插件使用 Apache Tika 库来解析和提取二进制文件的内容。通过使用 Attachment 插件&a…

redis数据库缓存服务器(基础命令)

redis比mysql访问数据快 非关系型数据库以键值对的方式存储数据 作用:加快访问速度,缓解数据库压力 redis最新版本7 特点 丰富的数据结构 list,set,hash等数据结构的存储 支持持久化 支持事务 “一个完整的动作,要么全部执行&#xff0…

数据结构:AVL树讲解(C++)

AVL树 1.AVL树的概念2.平衡因子3.节点的定义4.插入操作5.旋转操作(重点)5.1左单旋5.2右单旋5.3左右双旋5.4右左双旋 6.一些简单的测试接口7.完整代码 1.AVL树的概念 普通二叉搜索树:二叉搜索树 二叉搜索树虽可以缩短查找的效率,但…

D-Link监控账号密码信息泄露

访问漏洞的 url 为 /config/getuser?index0其中泄露了账号密码 使用泄露的账号密码登陆系统 文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。 免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的…

CCF-CSP真题《202309-3 梯度求解》思路+python,c++满分题解

想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号:202309-3试题名称:梯度求解时间限制:1.0s内存限制:512.0MB问题描述: 背景 西西艾弗岛运营公司近期在大力推广智能化市政管理系…

文本生成评估指标简单介绍BLEU+ROUGE+Perplexity+Meteor 代码实现

以下指标主要针对两种:机器翻译和文本生成(文章生成),这里的文本生成并非是总结摘要那类文本生成,仅仅是针对生成句子/词的评价。 首先介绍BLEU,ROUGE, 以及BLEU的改进版本METEOR;后半部分介绍P…

volatile-禁重排案例详解

在每一个volatile写操作前面插入一个StoreStore屏障--->StoreStore屏障可以保证在volatile写之前,其前面所有的普通写操作都已经刷新到主内存中。 在每一个volatile写操作后面插入一个StoreLoad屏障--->StoreLoad屏障的作用是避免volatile写与后面可能有的vo…

【Qt之QtXlsx模块】安装及使用

1. 安装Perl,编译QtXlsx源码用 可以通过命令行进行查看是否已安装Perl。 下载及安装传送门:链接: https://blog.csdn.net/MrHHHHHH/article/details/134233707?spm1001.2014.3001.5502 1.1 未安装 命令:perl --version 显示以上是未安装…

测试面试题集-UI自动化测试

1、列举web自动化中常见的元素定位方式? id:根据id来获取元素,返回单个元素,id值一般是唯一的;name:根据元素的name属性定位;tagName:根据元素的标签名定位;className&a…

基于国产仪器的某海上平台SPM振动监测系统

摘要:使用分布式采集仪和云智慧监测系统,实现海上浮式储油轮的单点SPM(水上水下有轴承的钢结构)振动监测,经受住了湿度高、气温变化大等多变的气候环境的考验。 关键词:石油平台,振动监测,环境 某海上浮式…

【vue2高德地图api】04-poi搜索

系列文章目录 文章目录 系列文章目录前言一、高德地图文档入口二、使用步骤1.创建文件以及路由2.编写页面代码3.样式4变量以及方法5.编写查询方法 总结 前言 提示:这里可以添加本文要记录的大概内容: 本篇要实现的功能,看下图 提示&#x…

FinalCutPro 移动项目的时候,遇到失去连接的文件怎么处理

FinalCutPro 移动项目的时候,遇到失去连接的文件怎么处理 有时候,FinalCutPro 项目在移动之后,一些链接到外面的文件会失去连接,文件虽然还在原有位置,但显示成下面这样: 解决方法 1. 点击菜单【文件】…

Java VMTranslator Part II

用Java写一个翻译器,将Java的字节码翻译成汇编语言 目录 程序控制流开发 基本思路 核心代码 实验结果,使用例子进行验证 函数调用 基本思路 核心代码 实验结果,使用例子进行验证 Parser CodeWriter Main 程序控制流开发 基本思路…

Activiti监听器

文章目录 学习链接任务监听器 TaskListener监听器监听的事件监听器委托类DelegateTask任务监听实现方式 — 类class绘制流程图自定义任务监听器SiteReportUserTaskListener 测试 监听实现方式 — 表达式expression绘制流程图自定义 TaskListenerExpression测试spring表达式 执行…

【MySQL事务篇】MySQL锁机制

MySQL锁机制 文章目录 MySQL锁机制1. 概述2. MySQL并发事务访问相同记录2.1 读-读情况2.2 写-写情况2.3 读-写或写-读情况2.4 并发问题的解决方案 3. 锁的不同角度分类3.1 从数据操作的类型划分:读锁、写锁1. 锁定读2. 写操作 3.2 从数据操作的粒度划分:…

前端框架Vue学习 ——(五)前端工程化Vue-cli脚手架

文章目录 Vue-cliVue项目-创建Vue项目-目录结构Vue项目-启动Vue项目-配置端口Vue项目开发流程 Vue-cli 介绍:Vue-cli 是 Vue 官方提供的一个脚手架,用于快速生成一个 Vue 的项目模版 安装 NodeJS安装 Vue-cli npm install -g vue/cliVue项目-创建 图…

简易线程池开发流程

简易线程池开发 线程池基本结构 #include"threadpool.h" //任务队列 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<strings.h> typedef struct Task {void(*function)(void* arg);void*arg; }Task; //线程池结构体 …