java类和对象详解(1)

面向对象的初步认知
什么是面向对象
Java是一门纯面向对象的语言(Object Oriented Program, 简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。
用面向对象的思想来涉及程序,更符合人们对于事物的认知,对于大型的程序设计,扩展和维护都非常友好。 (核心:找对象->面向对象->使用对象)。
面向对象和面向过程
面向对象和面向过程都是用来组织和处理程序中的数据和功能的方法,它们之间的主要区别在于如何组织和管理代码 🌟
面向对象(Object-Oriented):
- 面向对象编程将问题分解成一系列的对象,每个对象都是一个独立的实体,具有自己的属性和方法,对象之间通过交互来完成任务😺
- 程序中的数据和功能被封装在对象中,使代码更加模块化、灵活和易于维护💡
- 面向对象编程强调代码的重用性,可以通过继承和多态等特性,使得代码更加可扩展🌈
- Java、Python、C++等编程语言都支持面向对象编程🐾
- 面向过程可以看作人用洗衣机洗衣服的过程,总共有四个对象:人,水,衣服,洗衣机。整个过程主要是这四个对象之间交互完成的,人不需要关心洗衣机是如何洗衣服的,是如何甩干的。
面向过程(Procedural-Oriented):
- 面向过程编程将问题分解成一系列的过程(函数),每个过程执行特定的功能喵~ 程序按照过程的顺序依次执行😺
- 程序中的数据和功能被分散在各个过程中,代码可能较为冗长和重复,不太容易维护和扩展💦
- 面向过程编程比较直观和简单,适用于一些简单的任务和算法实现🐾
- C语言通常被认为是面向过程编程的代表🐾
- 面向对象可以看作传统人手洗衣服的过程,要经过许多流程才能洗好衣服,少了任何一个环节都不行。
在实际编程中,我们可以根据问题的复杂程度和需求选择合适的编程范式🌸
类定义和使用
类的简单认识
类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观?),哪些功能(干什么?),描述完成之后计算机就可以识别了。
比如:洗衣机,它是一个品牌,在java当中可以看作为一个类别。
属性:产品品牌,型号,质量,颜色,尺寸等。
功能:洗衣,烘干,除菌等。
类的定义格式
在java中定义类时需要用到class关键字,具体语法如下:
//创建类
class ClassName{field; //字段(属性)或者成员变量method;//行为或者成员方法
}
class为定义类的关键字,ClassName为类的名字,{}为类中的主体。
类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类的成员变量。方法主要用来说明类具有哪些功能,成为类的成员方法。
在之后,我们会学到类中包含的五种东西:1.成员变量,2.成员方法,3.构造器,4.代码块,5.内部类。
例:构建一个洗衣机类
public class WashMachine {public String bread;//品牌public String type;//型号public double weight;//重量public double length;//长public double width;//宽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的基础上计算机就可以识别了。
注意事项:
1.类名采用大驼峰定义
2.成员前写法统一为public,后面统一解释
3.此处写的方法不带static关键字,后面解释
4.建议一个类放在一个java文件夹中
5.main方法所在的类一般要用public修饰
6.public修饰的类必须要与文件名相同(因此不要轻易修改类的名称)。
类的实例化
什么是实例化
定义了一个类,就相当于在计算机中定义了一个新的类型, 与int,double等类似,只不过它们是java语言自带的内置类型,而类是用户定义了一个新的类型,比如上述的洗衣机类。它们都是类(一种新的定义类型),有了这些定义类型后,就可以使用这些类来定义实例(或称对象)。
用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。
public class test4 {public static void main(String[] args) {WashMachine wash1 = new WashMachine();//通过new来实例化对象wash1.brand = "牛逼牌";wash1.type = "XP180";wash1.washClothes();wash1.dryClothes();WashMachine wash2 = new WashMachine();//可以实例化多个对象wash2.brand = "王牌对王 牌";wash2.type = "XP150";wash2.washClothes();wash2.dryClothes();}
}
注意事项:
1.使用new关键字以创建一个对象的实例
2.使用. 来访问一个对象的属性和方法
3.同一个类中可创建多个实例(一个类实例化多个对象)
类和对象实例化的说明
1.类只是一个模具一样的东西,用于对一个实体进行描述,限定了类有哪些成员
2.类是一种自定义的类型,可以用来定义变量
3.一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量
4.打个比方,类实例化出的对象就像现实中使用建筑设计图建造出房子,类就像设计图,只管设计出需要什么东西,但没有实体化的建筑存在,同样类也是个设计,实例化出的对象才能存储实例化数据。
相关文章:
java类和对象详解(1)
面向对象的初步认知 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program, 简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。 用面向对象的思想来涉及程序,更…...
RxJava 倒计时,轮询器
笔记 倒计时 /*** 短信倒计时** param s*/private Subscription subscription30;public void startCountdownFinishRx30(int s) {clearFinishSubscription30();subscription30 Observable.interval(0, 1, TimeUnit.SECONDS).take(s 1).map(new Func1<Long, Long>() {O…...
SE-Net注意力机制
📌本次任务:了解SE-Net原理 SE-Net 是 ImageNet 2017(ImageNet 收官赛)的冠军模型,是由WMW团队发布。具有复杂度低,参数少和计算量小的优点。且SENet 思路很简单,很容易扩展到已有网络结构如 Inception 和 ResNet 中。(这篇论文是2019年的,应该是后续做了更新) 一…...
【Lua学习笔记】Lua进阶——垃圾回收
按照唐老师的课程本来要讲自带库的,但是想想这东西能看文档,ctrl左键还能看注解,并且最重要的许多自带库的方法基本大部分语言都有,其实看看就能懂了。所以还是重点讲讲垃圾回收 文章目录 GC辅助垃圾回收collectgarbage增量模式分…...
session和cookie
cookie和session结合使用 web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式: 1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保…...
P7243 最大公约数
题目 思路 利用曼哈顿原理求离(x,y)最远的点 代码 #include<bits/stdc.h> using namespace std; #define int long long #define INF 0x3f3f3f3f const int maxn2005; int gcd(int a,int b) { return b?gcd(b,a%b):a; } int n,m; i…...
ES6基础知识九:你是怎么理解ES6中Module的?使用场景?
一、介绍 模块,(Module),是能够单独命名并独立地完成一定功能的程序语句的集合(即程序代码和数据结构的集合体)。 两个基本的特征:外部特征和内部特征 外部特征是指模块跟外部环境联系的接口…...
TensorFlow项目练手(三)——基于GRU股票走势预测任务
项目介绍 项目基于GRU算法通过20天的股票序列来预测第21天的数据,有些项目也可以用LSTM算法,两者主要差别如下: LSTM算法:目前使用最多的时间序列算法,是一种特殊的RNN(循环神经网络)…...
微信小程序页面传值为对象[Object Object]详解
微信小程序页面传值为对象[Object Object]详解 1、先将传递的对象转化为JSON字符串拼接到url上2、在接受对象页面进行转译3、打印结果 1、先将传递的对象转化为JSON字符串拼接到url上 // info为对象 let stationInfo JSON.stringify(info) uni.navigateTo({url: /pages/statio…...
Redis篇
文章目录 Redis-使用场景1、缓存穿透2、缓存击穿3、缓存雪崩4、双写一致5、Redis持久化6、数据过期策略7、数据淘汰策略 Redis-分布式锁1、redis分布式锁,是如何实现的?2、redisson实现的分布式锁执行流程3、redisson实现的分布式锁-可重入4、redisson实…...
Entity Framework(EF)查询
一、In 查询 var list = dbContext.Users.Where(u => new int[] {1, 2, 3, 5,...
使用Pytest生成HTML测试报告
背景 最近开发有关业务场景的功能时,涉及的API接口比较多,需要自己模拟多个业务场景的自动化测试(暂时不涉及性能测试),并且在每次测试完后能够生成一份测试报告。 考虑到日常使用Python自带的UnitTest,所…...
DSA之图(4):图的应用
文章目录 0 图的应用1 生成树1.1 无向图的生成树1.2 最小生成树1.2.1 构造最小生成树1.2.2 Prim算法构造最小生成树1.2.3 Kruskal算法构造最小生成树1.2.4 两种算法的比较 1.3 最短路径1.3.1 两点间最短路径1.3.2 某源点到其他各点最短路径1.3.3 Dijkstra1.3.4 Floyd 1.4 拓扑排…...
[SQL挖掘机] - 窗口函数 - row_number
介绍: row_number() 是一种常用的窗口函数,它为结果集中的每一行分配一个唯一的数字。这个数字的分配基于指定的排序顺序,并且不会跳过相同的排名。 用法: row_number() 函数的语法如下: row_number() over ([partition by 列名1, 列名2,…...
【论文阅读】通过解缠绕表示学习提升领域泛化能力用于主题感知的作文评分
摘要 本文工作聚焦于从领域泛化的视角提升AES模型的泛化能力,在该情况下,目标主题的数据在训练时不能被获得。本文提出了一个主题感知的神经AES模型(PANN)来抽取用于作文评分的综合的表示,包括主题无关(pr…...
二分查找P1873 [COCI2011-2012#5] EKO / 砍树
P1873 [COCI2011-2012#5] EKO / 砍树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这个题就是给新手练手的,在那个位置上在进行,寻找合适的砍树高度,下面在介绍一个二分查找的模板 int binarySearch(vector<int>& nums, int t…...
【BOOST程序库】正则表达式相关操作
基本概念这里不解释了,代码中详细解释了BOOST程序库中对于正则表达式常用方法的详细用法。 #include <iostream> #include <string>//正则表达式头文件 #include <boost/xpressive/xpressive.hpp>int main() {//声明正则:boost::pres…...
阿里云国际版在使用过程中应该注意什么呢?
为确保系统稳定性,用户不得进行以下操作。否则,阿里云可能无法解决由以下违规操作引起的问题: 1) Windows系统中的PV Drivers 程序不可删除 PV Drivers程序为服务器虚拟化驱动程序,请不要针对该程序进行任何操作,如果删…...
Flutter Provider 共享状态管理
在使用Provider的时候,我们主要关心三个概念: ChangeNotifier:真正数据(状态)存放的地方ChangeNotifierProvider:Widget树中提供数据(状态)的地方,会在其中创建对应的Ch…...
std vector 用法
使用vector,需添加头文件#include,要使用sort或find,则需要添加头文件#include。函数封装在命名空间std中,使用:using namespace std; 1、vector的初始化 std::vector<int> nVec; // 空对象 std::vecto…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
