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…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...