课时3:类与对象的定义及使用

简介: 在明晰了类与对象的关系之后,下面我们来了解一下在Java中类与对象的语法定义。

课时3:类与对象的定义及使用

 

摘要:在明晰了类与对象的关系之后,下面我们来了解一下在Java中类与对象的语法定义。

 

在Java里,类是一个独立的结构体,需要使用“class”关键字来进行定义。类主要由属性和方法两部分组成,其中,属性即一个个具体的变量,而方法则是可操作、能重复执行的代码段。

接下来,我们通过定义一个简单的类来做示例说明。例如,我们定义一个名为“Person”的类,用于描述人员相关信息。代码如下:

image.png

class Person{
//定义人员的姓名属性,这里属性通常是引用类型,首字母大写,默认值为空值(null)
String name;
//定义人员的年龄属性,int类型默认值为0
int age;
//定义一个输出人员信息的方法,此方法通过对象来调用,所以不加“static”关键字
public void show(){
System.out.println("姓名:"+name+",年龄:"+age);
}
}

通过上述代码,我们便定义出了一个类,在这个类中,我们定义了两个属性和一个方法。


需要注意的是,这里属性和方法与之前所学的有所不同。之前在定义方法时,是在主函数等相关语境下定义且有主方法的情况,而现在定义的类中的方法是通过对象来调用的,所以不加“static”关键字,这点区别后续我们再做总结。


现在问题来了,有了类之后,如果想要使用类,那就必须通过对象来进行调用才能完成相应操作。而若要生成对象,则必须使用特定的语法格式来实现,下面给大家介绍两种格式,并逐一进行解释。

第一种格式是声明并实例化对象,语法格式为“类名称对象名称=new类名称();”,这其实是将两步操作合并完成了。这两步操作具体如下:


首先是声明对象,格式为“类名称对象名称;”,不过要注意,在为变量或对象定义时,通常都要为其设置一个默认值。我们之前在讲解数据类型的时候提到过,引用类型的默认值是“null”,所以建议大家按照规范来书写代码。


其次是实例化对象,格式为“对象名称=new类名称();”,通过这样的两步操作或者直接使用声明并实例化对象的格式,就能完成对象的创建了。


这两种做法能够助力我们完成程序中类的定义。

接下来进入类与对象的具体使用环节,我们依照上述方式来操作,使用类对象操作类。下面我先给出完整代码示例(后续部分展示会截取部分代码来说明),大家请看:

class Person{
String name;
int age;
public void show(){
System.out.println("姓名:"+name+",年龄:"+age);
}
}
public class Main{
public static void main(String[]args){
Person p=new Person();
//这是声明并实例化对象的操作
//获取实例化对象后,就需要通过对象来进行类中的操作调用,有两种调用方式
//一是调用类中的属性,格式为:实例化对象.成员属性=赋值内容(进行赋值操作),或者直接输出该属性值
//二是调用类中的方法,格式为:实例化对象.方法名称()
p.name="张三";
p.age=18;
pr.tell();
//先给对象的属性赋值,然后调用对象的方法
//进行代码验证,使用Java编译器执行代码,查看程序执行情况
}
}

通过上述代码,我们就完成了一个对象的基本使用流程,也就是先声明并实例化对象,接着通过对象去调用属性进行赋值等操作,而后再通过对象调用类中的方法。


不过需要牢记一点,倘若在程序中并未对对象的属性内容进行设置,那么该属性的数据内容就会是其对应数据类型的默认值。例如,我们来看一下之前程序的最终执行结果,如果像下面这样修改代码:

class Person{
String name;
int age;
public void show(){
System.out.println("姓名:"+name+",年龄:"+age);
}
}
public class Main{
public static void main(String[]args){
Person p=new Person();
pr.tell();
//这里不对属性进行赋值,直接调用方法
}
}

再次执行代码后可以发现,字符串类型(String)作为引用数据类型,其默认值为Null,而Int作为基本数据类型,默认值为0。如此一来,我们便实现了类与对象的定义与使用。

相关文章
|
9月前
|
编解码 Cloud Native 算法
通义万相:视觉生成大模型再进化
通义万相是阿里云推出的视觉生成大模型,涵盖图像和视频生成。其2.0版本在文生图和文生视频方面进行了重大升级,采用Diffusion Transformer架构,提升了模型的灵活性和可控性。通过高质量美学标准和多语言支持,大幅增强了画面表现力。此外,视频生成方面引入高压缩比VAE、1080P长视频生成及多样化艺术风格支持,实现了更丰富的创意表达。未来,通义万相将继续探索视觉领域的规模化和泛化,打造更加通用的视觉生成大模型。
|
12月前
|
存储 缓存 芯片
让星星⭐月亮告诉你,当我们在说CPU一级缓存二级缓存三级缓存的时候,我们到底在说什么?
本文介绍了CPU缓存的基本概念和作用,以及不同级别的缓存(L1、L2、L3)的特点和工作原理。CPU缓存是CPU内部的存储器,用于存储RAM中的数据和指令副本,以提高数据访问速度,减少CPU与RAM之间的速度差异。L1缓存位于处理器内部,速度最快;L2缓存容量更大,但速度稍慢;L3缓存容量最大,由所有CPU内核共享。文章还对比了DRAM和SRAM两种内存类型,解释了它们在计算机系统中的应用。
1065 1
|
数据可视化 中间件 API
FreeRTOS记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置)
熟悉 在 STM32 CubeMX 下面的 FreeRTOS 使用
2343 1
FreeRTOS记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置)
|
存储 缓存 算法
缓存层设计套路(一)
对于传统的后端业务场景或者单机应用中访问量以及对响应时间的要求均不高通常只使用DB即可满足要求。这种架构简单便于快速部署很多网站发展初期均考虑使用这种架构。但是随着访问量的上升以及对响应时间的要求提升单DB无法再满足要求。
3719 0
|
6月前
|
开发工具 Android开发 iOS开发
如何在Android Studio中配置Flutter环境?
如何在Android Studio中配置Flutter环境?
1490 61
|
3月前
|
数据安全/隐私保护 Python
抖音抢福袋脚本辅助器, 抢福袋最新脚本免费,抖音抢红包脚本插件【autojs】
该脚本实现以下核心功能:自动识别抖音窗口并置顶‌
|
11月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
746 3
|
7月前
|
Java 编译器
课时9:this调用本类属性
本次分享的主题是 This 调用本类属性。主要分为一个部分: 使用 This 关键字表示或调用当前对象的属性
|
7月前
|
安全 Java Scala
课时1:面向对象简介
Java的面向对象编程(OOP)是其核心特性之一,强调模块化设计与重用。OOP具有三大特征:封装性、继承性和多态性。封装确保内部操作对外不可见;继承允许在已有类基础上扩展功能;多态支持类型转换和灵活处理。OOP设计流程包括分析(OOA)、设计(OOD)和编程(OOP),帮助开发者构建复杂而高效的程序。理解OOP的关键在于将其与生活中的合理场景类比,使抽象概念更易掌握。
|
7月前
|
虚拟化 网络虚拟化 Windows
导入虚拟机到Hyper-V环境时,理解并配置网络适配器设置是确保网络通信的关键
在Hyper-V环境中,正确配置虚拟机的网络适配器是确保其网络通信的关键。需先启用Hyper-V功能并创建虚拟交换机。接着,在Hyper-V管理器中选择目标虚拟机,添加或配置网络适配器,选择合适的虚拟交换机(外部、内部或私有),并根据需求配置VLAN、MAC地址等选项。最后,启动虚拟机并验证网络连接,确保其能正常访问外部网络、与主机及其他虚拟机通信。常见问题包括无法访问外部网络或获取IP地址,需检查虚拟交换机和适配器设置。