【第三章-1】面向对象——类与对象基本概念

目录

1.引例

2.类class

3. 面向对象中什么是对象?

4.类和对象的关系

5.面向对象编程

6.IDEA创建类与对象

7.成员变量

8.IDEA上代码练习成员变量

9.什么是方法

10.包Package(详细参考)

11.访问修饰符

12.面向对象与面向过程


1.引例

两个同学:

学号

姓名

性别

手机号

20171001

王草

18610022345

20171002

李花

13820490902

如何Java代码表示这两组数据

用代码表示的内容有什么相同之处。

问题:

- 同样是表示姓名,为什么一个叫 name_1 一个叫 name_2 ?
- int double boolean String 都是数据类型。为什么不建一种新的类型来表示学生这种复杂的信息呢?

2.类class

, class :用于描述一种数据类型

Java里,通过新建 class 来描述各种自定义的数据类型。一个class可以若干基本类型的组合

如上面的表格我们可以通过创建一个自定义类,来保存其结构对应列的数据。像这种有固定结构的数据类型,在业界称为结构数据。

动手尝试:根据类的语法,创建一个能保存刚刚表格数据的类。

3. 面向对象中什么是对象?

”世间万物皆对象“,意思是我们生活中所能看见的一切,在Java中都可以称之为对象,比如一根笔、一个动物、太阳、手机等等。这些生活中一个个肉眼可见的物体,都可以叫做对象。

那么,类和对象又有什么关系呢?

4.类和对象的关系

  类和对象又有什么关系呢?我们知道现实生活中所有物品(有生命的、以及没有生命的),都叫做对象。同样的,两个不同品牌的笔是两个对象(你可以把笔拟人化,类似于每个拥有自己独立的灵魂,这是两个不同的个体,所以不同的两个笔是两个对象)。那么我们可以发现,这些对象为了方便起见,都有类别,比如刚刚的两个笔是属于文具类,同样的,世间上的所有事物(对象),在现实生活中都对应有类别,这些类别把具有相同特征的不同对象分门别类,让我们能更好的区分。

  那么,这些事物在java中对应对象,类别在Java中对应的是类。这便是对象和类在我们现实生活中的映照关系!?

  那么,类和对象在Java中有什么关系呢?我们说”类是对象的模板“。意思是类长得像个模板(回忆模板的功能),能够将我们的对象”统一样式“。

  以下面这两只狗狗为例,这两个狗狗有不同的名字,可以定义一个犬类,然后实例化每一只具体的狗狗。

同样的,类有属性和方法两个内容,继续以宠物犬这个犬类为例。

那么对应关系为:

特征——属性

行为——方法

类和对象关系的总结:

学号

姓名

性别

手机号

20171001

王草

18610022345

20171002

李花

13820490902

这是开始的那个学生信息表,对应创建一个Student类。那么对应的类和对象为:

类:类型,描述某一类事物的共性

Student是一个类型

所有的Student都有id,name,sex, cellphone这几个属性

对象:一个具体实例

s1是一个Student类型的对象,

因而,s1具有id, name, sex, cellphone这几个属性

5.面向对象编程

6.IDEA创建类与对象

7.成员变量

8.IDEA上代码练习成员变量

9.什么是方法

可以把具有相同功能的代码,通过“方法”封装起来。
如何通过方法来封装呢?

10.包Package(详细参考)

假如有很多Person类,有的有名字有性别,有的又只有名字,那我是不是代码删了写,写了又删?有没有办法这个同样的Person类都存在呢?那有人一激灵说这还不好说,多建几个类不就好了?而File already exists?什么意思?文件已经存在!

我们发现电脑上两个相同的文件放在一起是不是会提示是否要覆盖?那你如果不覆盖,只能改名字了。还有个方法,就是放在不同文件夹中,是不是?

同理java项目中也是可以分不同文件夹的。只不过java中类的文件夹不叫文件夹,叫“包名”

英文单词:package,那package还有个意思就是打包的意思,所以你可以理解为这个文件夹,就是打了一个包裹,就跟快递包裹似的,你买了好多东西,不同商家是不同的包裹,每个包裹放的东西是不同类别的。

java中也是这个意思,包中放的基本上都是同一类的东西。比如放汽车类,有Car,有Bus,有MiniBus,有Taxi是不是

好了,说这么多,其实就是一个文件夹而已!记住在Java中叫做包。

为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。

包的作用(对类进行分类管理)

1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
2 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
3 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

创建包

Java项目中,每一个包中的文件,都要有相应的包声明

Java文件中,声明一个包需要注意

1、声明一个包使用关键字:package

2、一个类中,包的声明必须放在类中第一行

3、包名也是标识符全部都是小写,多级之间使用.隔开;一般为了避免包名       重复都是公司域名反转加项目名加模块

通过import使用包

比如你使用了某个包的所有类,你可以这样

import cn.craaaaazy.fruit.*;

如果一个类中要使用其它包中的类,而且不止使用一次,通过上面的方式就比较麻烦,应该通过导包的方式来解决问题

         导包需要使用关键字:import

         导包的位置:在包声明(package)下面,类(class)上面

         导包的格式:import 完整包名.类名; 

11.访问修饰符

定义:Java中,可以使用访问修饰符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限

private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类

default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法

protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。

   注意:不能修饰类(外部类)

public : 对所有类可见。使用对象:类、接口、变量、方法

12.面向对象与面向过程

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

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

相关文章

Docker入门二(应用部署、迁移与备份、DockerFile、docker私有仓库、Docker-Compose)

文章目录 一、应用部署1.MySQL部署2.Redis部署3.Nginx部署 二、迁移与备份1.容器做成镜像2.镜像备份和恢复(打包成压缩包) 三、DockerFile0.镜像从哪里来?1.什么是DockerFile2.DockerFile 构建特征3.DockerFile命令描述4.构建一个带vim的centos镜像案例5…

PC-DARTS: PARTIAL CHANNEL CONNECTIONS FOR MEMORY-EFFICIENT ARCHITECTURE SEARCH

PC-DARTS:用于内存高效架构搜索的部分通道连接 论文链接:https://arxiv.org/abs/1907.05737 项目链接:https://github.com/yuhuixu1993/PC-DARTS ABSTRACT 可微分体系结构搜索(DARTS)在寻找有效的网络体系结构方面提供了一种快速的解决方案…

[java基础揉碎]断点调试

一个实际需求: 1.在开发中,新手程序员在查找错误时,这时老程序员就会温馨提示,可以用断点调试, 一步一步的看源码执行的过程,从而发现错误所在。 2.重要提示:在断点调试过程中,是运行状态,是以…

TCP-IP 知识汇总

开放式系统互联模型------国际化标准组织ISO提出----协议组(协议模型) 应用层:接收用户数据,人机交互的接口 表示层:将编码转换为二进制(加密、解密)---统一格式 会话层:针对传输…

一维差分(模板)

差分是前缀和的逆运算&#xff0c;对于一个数组a&#xff0c;其差分数组b的每一项都是a [ i ]和前一项a [ i − 1 ]的差。 注意&#xff1a;差分数组和原数组必须分开存放&#xff01;&#xff01;&#xff01;&#xff01; #include <iostream> using namespace std;t…

PCL安装(C++)并配置vs

准备工作&#xff1a; 1.PCL下载包(此教程使用PCL1.11.0) 3.visual studio(此教程使用vs2019) PCL下载&#xff1a; 1、找到自己适合的PCL版本,我选择的是PCL1.11.0。 1.1 Github下载&#xff1a;Releases PointCloudLibrary/pcl GitHub 1.2 百度网盘&#xff1a;https://pan…

FDTD液晶折射率各项异性表示方法

由于FDTD的数据都是沿坐标轴的&#xff0c;各向异性材料的参数也需要根据坐标轴来输入。 首先要了解坐标变换。 坐标变换 这里以二维坐标变化为例。 矢量下我们可以发现OP可在两个坐标系下分别表示 接下来将两个坐标相互关联&#xff0c;这里以Xb举例&#xff0c;Yb同理 注…

Transformer中注意力层和位置感知前馈层的分工与合作

1. 注意力层和位置感知前馈层的分工与合作 在Transformer模型中&#xff0c;注意力层&#xff08;自注意力机制&#xff09;和位置感知前馈层&#xff08;Position-wise Feed-Forward Networks, FFNs&#xff09;分别承担着不同的任务&#xff1a; 注意力层&#xff08;自注意…

SQLiteC/C++接口详细介绍之sqlite3类(六)

快速前往文章列表&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;五&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;七&#xff09; 19. sqlite3_changes与sqlite3_changes64 是SQLite中用…

用Windows server2022实现批量装机(原理server系列通用)

本篇文章将手把手教会大家从Windows server的安装到批量安装环境的部署&#xff08;我将使用vmware进行操作&#xff0c;物理机过程相同&#xff09; Windows server2022系统镜像可以从msdn和hellowindows下载 MSDN, 我告诉你 - 做一个安静的工具站 (itellyou.cn) &#xff08…

数据仓库核心:揭秘事实表与维度表的角色与区别

文章目录 1. 引言2. 基本概念2.1 事实表&#xff08;Fact Table&#xff09;2.2 维度表&#xff08;Dimension Table&#xff09; 3. 两者关系4. 为什么要有做区分5. 写在最后 1. 引言 前篇我们深入探讨了Hive数据仓库中的表类型&#xff0c;包括内部表、外部表、分区表、桶表…

HarmonyOS鸿蒙开发常用4种布局详细说明

介绍一下鸿蒙开发常用4种布局 1、线性布局 2、层叠布局 3、网格布局 4、列表布局 ​1. 线性布局&#xff08;Column/Row&#xff09; 线性布局&#xff08;LinearLayout&#xff09;是开发中最常用的布局&#xff0c;通过线性容器Row&#xff08;行&#xff09;和Column&…

【数据结构七】堆与PriorityQueue详解

堆 在Java中有一种数据结构基于队列&#xff0c;并保证操作的数据带有优先级&#xff0c;该数据结构应该提供了两个最基本的操作&#xff0c;一个是返回最高优先级对象&#xff0c;一个是添加新的对象。这种数据结构就是优先级队列(Priority Queue)。它的底层使用了堆这种数据结…

数学与计算机(2)- 线性代数

原文&#xff1a;https://blog.iyatt.com/?p13044 1 矩阵 NumPy 中 array 和 matrix 都可以用于储存矩阵&#xff0c;后者是前者的子类&#xff0c;array 可以表示任意维度&#xff0c;matrix 只能是二维&#xff0c;相当于矩阵专用&#xff0c;在一些矩阵的运算操作上较为直…

openEular入门操作(仅供学习哦~)

如何登录Linux&#xff1f; shell简介 修改密码 Linux用户 bash shell快捷操作 进入openEular&#xff0c;输入账号密码。 命令ip addr 进入putty&#xff0c;输入查到的ip&#xff0c;使用ssh。即可远程登录 修改密码&#xff0c; 修改用户&#xff08;passwd 用户名字&…

Secure MIMO Communication Relying on Movable Antennas

文章目录 IV. SIMULATION RESULTSA. Simulation SetupB. Convergence Behaviour of the Proposed AlgorithmsC. Baseline SchemesD. Performance Analysis Compared to Baseline Schemes IV. SIMULATION RESULTS 在本节中&#xff0c;仿真结果验证了所提出算法的有效性&#x…

Python 多线程大批量处理文件小程序

说明 平时偶尔需要进行重复性的对文件进行重命名、格式转化等。假设以文件复制功能作为目标&#xff0c;设计一个小程序使用多线程对文件进行批量复制。&#xff08;其实以后主要目标是针对Realsense的raw文件进行批量的转化&#xff0c;并借助多线程加速&#xff09; 代码 i…

FileZillaClient连接被拒绝,无法连接

1.ECONNREFUSED - 连接被服务器拒绝 2、无法连接FZ时&#xff0c;判断没有ssh 更新源列表&#xff1a; sudo apt-get update 安装 openssh-server &#xff1a;sudo apt-get install openssh-server 查看是否启动ssh&#xff1a;sudo ps -e | grep ssh

html5cssjs代码 023 公制计量单位进位与换算表

html5&css&js代码 023 公制计量单位进位与换算表 一、代码二、解释 这段HTML代码定义了一个网页&#xff0c;用于展示公制计量单位的进位与换算表。 一、代码 <!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"utf-8&quo…

【全面了解自然语言处理三大特征提取器】RNN(LSTM)、transformer(注意力机制)、CNN

目录 一 、RNN1.RNN单个cell的结构2.RNN工作原理3.RNN优缺点 二、LSTM1.LSTM单个cell的结构2. LSTM工作原理 三、transformer1 Encoder&#xff08;1&#xff09;position encoding&#xff08;2&#xff09;multi-head-attention&#xff08;3&#xff09;add&norm 残差链…