【Java面向对象】对象和类
文章目录
- 1.为对象定义类
- 2.定义类
- 2.1 主类
- 3.类与对象
- 3.1 构造方法
- 3.2 通过引用变量访问对象
- 3.3 访问对象的数据和方法
- 3.4 引用数据域和 null 值
- 3.5 基本类型变量和引用类型变量的区别
- 4.常见的类
1.为对象定义类
面向对象程序设计(OOP) 就是使用对象进行程序设计。对象 (object) 代表现实世界中可以明确标识的一个实体。
- 一个对象的状态 (state, 也称为特征 (property) 或属性 (attribute)) 是由数据域及其当前值来表示的。
- 一个对象的行为 (behavior, 也称为动作 ( action)) 是由方法定义的。调用对象的一个方法就是要求对象完成一个动作。
使用一个通用类来定义同一类型的对象。
类是一个模板、蓝本或者合约,用来定义对象的数据域以及方法。
对象是类的实例。可以从一个类中创建多个实例。
创建实例的过程称为实例化 对象 (object) 和实例 (instance) 经常是可以互换的。类和对象之间
的关系类似于苹果派配方和苹果派之间的关系。
Java 类使用变量定义数据域,使用方法定义动作。除此之外,类还提供了一种称为构造方法 ( constructor) 的特殊类型的方法,调用它可以创建一个新对象。构造方法本身是可以完成任何动作的,但是设计构造方法是为了完成初始化动作,例如初始化对象的数据域。
将包含 main 方法的类称为主类 (main class)。
2.定义类
public class Test{public static void main(String args){Circle c1 = new Circle();Circle c2 = new Circle(1.0);System.out.println(c2.getRadius());}
}class Circle{//属性double radius;//方法Circle(){radius = 1;}Circle(double a){radius = a;}double getRadius(){return radius;}
}
也可以把Test和Circle放一起
public class Circle{public static void main(String args){Circle c1 = new Circle();Circle c2 = new Circle(1.0);System.out.println(c2.getRadius());}//属性double radius;//方法Circle(){radius = 1;}Circle(double a){radius = a;}double getRadius(){return radius;}
}
2.1 主类
文件中只能有一个类是公共( public)类。公共类必须与文件同名。
主类包含 main 方法,运行这个程序时,Java 运行时系统会调用主类中的 main 方法。
使用类的程序通常称为该类的客户( client)。
3.类与对象
3.1 构造方法
- 构造方法必须和所在类名字相同。
- 构造方法没有返回值类型,甚至连 void 也没有。
- 构造方法是在创建一个对象时由 new 操作符调用的。构造方法的作用是初始化对象.
- 构造方法可以重载
通常,类会提供一个没有参数的构造方法 .这样的构造方法称为无参构造方 法 (no-arg 或 no-argument constructor) .
在一个类中,用户可能没有定义构造方法。在这种情况下,类中会隐式定义一个方法体为空的无参构造方法。这个构造方法称为默认构造方法 (defaultconstructor), 当且仅当类中没有明确定义任何构造方法时才会自动提供。
3.2 通过引用变量访问对象
对象是通过对象引用变量 ( reference variable) 来访问的,该变量包含了对对象的引用。
本质上来说,类是程序员定义的类型。类是一种引用类型 (referencetype), 这意味着该类类型的变量都可以引用该类的一个实例。
// 声明对象引用变量
ClassName objectRefVar;// 创建一个对象
new ClassName();// 声明对象引用变量、创建对象以及将对象的引用赋值给这个变量的语句
C1assName objectRefVar = new ClassName() ;
从表面上看,对象引用变量中似乎存放了一个对象,但事实上,它只是存放了对该对象的引用。严格地讲,对象引用变量和对象是不同的,但是大多数情况下,这种差异是可以忽略的。
另外,在 Java 中,数组被看作对象。数组是用 new 操作符创 建的。一个数组变量实际上是一个包含数组引用的 变量。
3.3 访问对象的数据和方法
在面向对象编程中,对象成员指该对象的数据域和方法。在创建一个对象之后,它的数据访问和方法调用可以使用点操作符 ( .) 来进行,该操作符也称为对象成员访问操作符( object member access operator)
objectRefVar.dataField // 引用对象的数据域
objectRefVar .method(arguments); //调用对象的方法
之前的数据域 radius 称作实例变量 ( instance variable), 因为它依赖于某个具体的实例。基于同样的原因. getArea 方法称为实例方法 (instance method), 因为只能在具体的实例上调用它。实例方法被调用的对象称为调用对象 (calling object)
3.4 引用数据域和 null 值
数据域也可能是引用型的。
class Student{String name;
}
String 是一个预定义的 Java 类。
如果一个引用类型的数据域没有引用任何对象,那么这个数据域就有一个特殊的 Java值 null。null 同 true 和 false —样都是字面值。true 和 false 是 boolean 类型字面值,而null 是引用类型字面值。
引用类型数据域的默认值是 null, 数值类型数据域的默认值是 0, boolean 类型数据域的默认值是 false, 而 char 类型数据域的默认值是 1\u0000
但是,Java 没有给方法中的局部变量赋默认值
3.5 基本类型变量和引用类型变量的区别
每个变量都代表一个保存了存储值的内存位置。声明一个变量时,就是在告诉编译器这个变量可以存放什么类型的值。
- 对基本类型变量来说,对应内存所存储的值是基本类型值
- 对引用类型变量来说,对应内存所存储的值是一个引用,是对象的存储地址。
将一个变量赋值给另一个变量时,另一个变量就被赋予同样的值。
- 对基本类型变量而言,就是将一个变量的实际值赋给另一个变量。
- 对引用类型变量而言,就是将一个变量的引用赋给另一个变量。说白了就是,赋值之后就指向同一个对象了。
指向对象的变量指向新的对象后,以前引用的对象就不再有用,因此,现在它就成为垃圾 (garbage)。垃圾会占 用内存空间。Java 运行系统会检测垃圾并自动回收它所占据的空间,这个过程称为垃圾回收
(garbage collection )。
可以显式地给该对象的引用变量赋 null 值。如果该对
象没有被任何引 用 变量所引 用,Java 虚拟机将自动回收它所占据的空间。
4.常见的类
相关文章:

【Java面向对象】对象和类
文章目录 1.为对象定义类2.定义类2.1 主类 3.类与对象3.1 构造方法3.2 通过引用变量访问对象3.3 访问对象的数据和方法3.4 引用数据域和 null 值3.5 基本类型变量和引用类型变量的区别 4.常见的类 1.为对象定义类 面向对象程序设计(OOP) 就是使用对象进行程序设计。对象 (obje…...
在微服务架构架构中父工程中的`<dependencyManagement>`和 `<dependencies>`的区别
在微服务架构架构中父工程中的<dependencyManagement>和 <dependencies>的区别: 在微服务架构中,通常会有一个父工程(或称作聚合工程)来管理一组相关的子模块(即各个微服务)。Maven 的 <de…...
Docker安装Zookeeper、RocketMQ
安装Zookeeper 拉取镜像 docker pull zookeeper:3.9.2启动容器 -d后台启动,-p映射容器2181端口到宿主机2181端口,限制容器最大内存占用为128m,–restart容器自动重启 docker run -d -p 2181:2181 -m 128m --restartalways --name zookeepe…...

Ubuntu 磁盘扩容
1.下载工具 sudo apt-get install gparted 2.调整大小...
如何在QGC中接收和处理无人机上传的各种传感器数据(如GPS、IMU等)。
在 QGroundControl (QGC) 中接收和处理无人机上传的各种传感器数据(如 GPS、IMU 等),主要通过 MAVLink 协议实现。MAVLink 是一种轻量级的消息传输协议,用于无人机和地面站之间的通信。QGC 通过 MAVLink 消息接收来自无人机的传感…...

Spring配置Bean自己的关系:继承和依赖
继承:这里的继承不是Java中类之间的继承, 是指配置文件中Bean配置项之间的继承。 用parent属性,配置要继承的bean,这样可以把相同的部分去去掉,下上两个bean的关系就变成了父bean和子bean, 子bean可以继承父…...
科技与狠活
科技与狠货,已经见怪不怪了 从黑龙江到海南,从上海到新疆,960万平方公里,十三亿人,每个地方都是科技与狠活 在抖音上面看到一个评论,如果蔬菜没科技与狠活,估计会很贵,但是我想到在…...

Vue:axios请求数据转存leanCloud
思路: 采用axios请求需要的数据,查看leanCloud中数据批量存储的格式,将两个数据进行对比,将请求得到的数据封装为云服务存储的格式,再发leanCloud存储数据的请求完成转存 1.封装js代码 //批量操作新增数据 import r…...

实战篇(九):解锁3D魔方的秘密:用Processing编程实现交互式魔方
解锁3D魔方的秘密:用Processing编程实现交互式魔方 使用 Processing 创建一个 3D 魔方效果展示1. 安装 Processing2. 项目结构3. 代码实现4. 代码解释4.1. 初始化魔方4.2. 绘制魔方4.3. 处理鼠标事件4.4. 检查点击的面4.5. 旋转面和最终确定旋转5. 运行和测试6. 细节解释6.1. …...
Android系统上常见的性能优化工具
Android系统上常见的性能优化工具 在Android系统开发中,性能优化是一个重要的任务,有许多工具可以帮助你进行各种方面的性能分析和优化。以下是一些常见的Android性能优化工具及其用途和使用方法: 1. Android Studio Profiler 功能: 提供CP…...

TG创建小程序交互APP登录以及机器人信息
1、搜索 BotFather ,输入命令 /newbot 创建机器人。 2、修改机器人信息 /mybots 编辑名称 : 修改机器人名称 编辑关于: 修改关于 hayden yyds,修改以后打开机器人会出现在下图 编辑描述 : 机器人的描述 编辑描述图片 : 机器人的图片 编辑 Botpic…...

探索大模型能力--prompt工程
1 prompt工程是什么 1.1 什么是Prompt? LLM大语言模型终究也只是一个工具,我们不可能每个人都去训一个大模型,但是我们可以思考如何利用好大模型,让他提升我们的工作效率。就像计算器工具一样,要你算10的10倍&#x…...

【经验分享】运用云服务器实现挂机手机网课的操作,部分手机软件适用
目录 第一步下载手机模拟器 第二步找到模拟器的文件位置 第三步找到模拟器的下载文件进行打包处理 编辑 第四步将模拟器粘贴到云服务器上 第五步运行程序 第六步在模拟器中下载网课软件 第一步下载手机模拟器 这里我下载的是联想模拟器,用来模拟手机环境 随…...

【从0到1进阶Redis】主从复制 — 主从机宕机测试
上一篇:【从0到1进阶Redis】主从复制 测试:主机断开连接,从机依旧连接到主机的,但是没有写操作,这个时候,主机如果回来了,从机依旧可以直接获取到主机写的信息。 如果是使用命令行,来…...

Flask启动5000端口后关不掉了?
事情是这样的: 使用python app.py启动flask应用后,又启动了另一个flask测试应用,也能启动成功,也没有报设么端口冲突,关闭黑窗口后,访问还是有守护进程在运行, 为什么我知道5000还在运行&#…...

Redis的热key解决
1、Redis热Key会带来哪些问题 1、流量集中,达到物理网卡上限。 当某一热点 Key 的请求在某一主机上超过该主机网卡上限时,由于流量的过度集中,会导致服务器中其它服务无法进行。 2、请求过多,缓存分片服务被打垮。 如果热点过于…...

在linux中查找 / 目录下的以.jar结尾的文件(find / -name *.jar)
文章目录 1、查找 / 目录下的以.jar结尾的文件 1、查找 / 目录下的以.jar结尾的文件 [rootiZuf6332h890vozldoxcprZ ~]# find / -name *.jar /etc/java/java-1.8.0-openjdk/java-1.8.0-openjdk-1.8.0.342.b07-1.el9_0.x86_64/lib/security/policy/limited/US_export_policy.ja…...
【Python爬虫教程】第6篇-使用session发起请求
为什么要使用session 前面介绍了如何使用reqesuts发起请求,今天介绍如何使用session发起请求。session简单理解就是一种会话机制,在浏览器中我们登录完之后,后面再请求服务数据都不需要再登录了,以为Cookie里已经保存了你的会话状…...

【Hot100】LeetCode—763. 划分字母区间
目录 题目1- 思路2- 实现⭐763. 划分字母区间——题解思路 3- ACM 实现 题目 原题连接:763. 划分字母区间 1- 思路 思路 目标:同样的字母 字符串尽可能的长 问1:怎么确定字母数 ——> 哈希表问2:怎么让字符尽可能的长&#…...
分布式服务基于Zookeeper的分布式锁的实现
一、序言 ZooKeeper 的分布式锁机制是一种协调多个客户端访问共享资源的方法。通过使用 ZooKeeper 的持久化节点和临时顺序节点,可以实现高效且可靠的分布式锁。下面是分布式锁的工作原理以及如何使用它的具体步骤。 二、Zookeeper分布式锁的核心原理 创建锁目录节…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...

《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...