当前位置: 首页 > news >正文

类和对象的阐述<1>

目录

1.类和对象的引入

2.类的定义和使用

1.类的认识

2.类的定义格式

3.类的实例化(对象的引出)

4.如何访问对象当中的成员

3.this关键字

4.对象的构造及初始化

1.默认初始化

2.就地初始化

3.构造方法初始化

1.类和对象的引入

Java是一门纯面向对象的一门语言,在这门语言里,一切皆为对象。那我们要使用Java语言,就必须要熟练认识和掌握类和对象。接下来让我们看看类和对象是怎么个会事吧!

2.类的定义和使用

1.类的认识

类是用来对一个实体(对象)来经行描述的。比如说凳子这种东西,我们就可以把他定义为一个类,凳子它有品牌名字,长宽高,有多重等等。而名字,长宽高,重量这些属性就属于凳子这个类,类也就相当于这些属性的集合(类中也包含方法,下面会讲到)。那我们该怎么定义类的结构呢?

2.类的定义格式

在Java中定义类时需要⽤到class关键字,具体语法如下:

//创建一个类

class Student{

public String stuNum;

public String name;

public int age;

public void show(){

System.out.println(" 该学生有在好好学习 ");

}

}

class为定义类的关键字,Student为类的名字,{}内为类的主体;类中包含的内容称为类的成员,由于定义在类当中又可以称为成员属性;类当中也可以包含方法,用于说明类有哪些功能,称为成员方法。

注意事项:

1.类名注意采⽤⼤驼峰定义,比如定义洗衣机这个类 WashMachine。

2.⼀般⼀个⽂件当中只定义⼀个类

3.public修饰的类必须要和⽂件名相同

3.类的实例化

在2.1中讲到我们可以定义一个叫凳子的类,它包含了各种属性,用于描述凳子,那我们就可以使用凳子这个类去实例化某个特定的实体。

定义了⼀个类,就相当于在计算机中定义了⼀种新的类型,与int,double类似,只不过int和double 是java语⾔⾃带的内置类型,⽽类是⽤户⾃定义了⼀个新的类型,⽐如上述的:Desk类和Student 类。它们都是类(⼀种新定义的类型)有了这些⾃定义的类型之后,就可以使⽤这些类来定义实例(或者 称为对象)。

⽤类类型创建对象的过程,称为类的实例化,在java中采⽤new关键字,配合类名来实例化对象。

public class Test{

public static void main(String[] args){

Student student1 = new Student();

//创建了一个Student类的对象,这个对象的名字叫student1。

Student student2 = new Student();

}

}

我们可以通过Student这个类去实例化多个对象,每个对象都包含类中的各各属性;

每个对象都包含类中的属性,那我们该怎么去访问这些属性(类中的成员)呢?

4.如何访问对象当中的成员

public class Test {

public static void main(String[] args){

Student student1 = new Student(); //通过new来实例化对象

student1.stuNum = "20260317";

student1.name = "小帅";

student1.age = 18;

student1.show();

}

我们可以通过 对象名.类成员变量(成员方法) 的形式来访问或修改对象中的成员

3.this关键字

public class Date {

public int year;

public int month;

public int day;

public void setDay(int year, int month, int day){

year = year;

month = month;

day = day;

}

public void printDate(){

System.out.println(year + "/" + month + "/" + day);

}

public static void main(String[] args) {

// 构造三个⽇期类型的对象 d1 d2 d3

Date d1 = new Date();

Date d2 = new Date();

Date d3 = new Date();

// 对 d1 , d2 , d3 的⽇期设置

d1.setDay(2020,3,15);

d2.setDay(2020,3,16);

d3.setDay(2020,3,17);

// 打印⽇期中的内容

d1.printDate();

d2.printDate();

d3.printDate();

}

}

图片

这里的形参名与成员变量名相同,在打印的时候年月日都为0;这是为什么呢?

因为year,month,day定义在setDay这个方法中,是局部变量;在这个方法内局部变量优先使用,那year = year;就相当于自己等于自己,给自己赋值,局部变量就不会给类中的成员变量赋值,成员变量就为默认的初始值0;(当然setDay的形参可以不与成员变量名相同,但有时候我们实例化多个对象,多个对象使用同一方法的时候,我们不容易判断形参是给哪个对象的成员变量赋值,就可能会产生问题)

那我们该怎么解决这种问题呢?我们就需要this关键字。

this是什么?

this引⽤ 指向当前对象(成员⽅法运⾏时调⽤该成员⽅法的对象),在成员⽅法中所有成员变量的操作, 都是通过该引⽤去访问。只不过所有的操作对⽤⼾是透明的,即⽤⼾不需要来传递,编译器⾃动完成。

图片

我们将上述代码改为

public void setDay(int year, int month, int day){

this.year = year;

this.month = month;

this.day = day;

}

这样我们在 d1.setDay(2020,3,15) 调用上述方法的时候,方法中的this就指向对象d1(因为我们通过d1这个对象的引用去访问到了setDay这个方法),这样我们就能知道我们形参year在给d1这个对象中的成员变量year赋值;同时我们也可以this.成员方法。

关于this引用的特性

1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引⽤类型

2. this只能在"成员方法"中使用

3. 在"成员方法"中,this只能引用当前对象,不能再引⽤其他对象

4. this是“成员⽅法”第⼀个隐藏的参数,编译器会⾃动传递,在成员⽅法执⾏时,编译器会负责将 调⽤成员⽅法对象的引⽤传递给该成员⽅法,this负责来接收;

我们也可以通过this来访问构造⽅法,那么什么是构造⽅法呢?

4.对象的构造及初始化

1.默认初始化

在Java⽅法内部定义⼀个局部变量时,必须要初始化,否则会编译失败。但是在第三块this关键字的Date举例中,我们在类中没给日期初始化,在调用方法赋值时也没赋值上,但还是能编译通过,打印的都是0,这就说明Java对我们的成员变量有默认初始化。

2.就地初始化

在类当中就给初始化

public int year = 2000;

public int month = 2;

public int day = 3;

3.构造方法初始化

构造⽅法(也称为构造器)是⼀个特殊的成员⽅法,名字必须与类名相同,在创建对象时,由编译器⾃动 调⽤,并且在整个对象的⽣命周期内只调⽤⼀次。

public class Date {

public int year;

public int month;

public int day;

public void setDay(int year, int month, int day){

this.year = year;

this.month = month;

this.day = day;

}

public Data(){

}

public Date(int year, int month, int day){

this.year = year;

this.month = month;

this.day = day;

}

public void printDate(){

System.out.println(year + "/" + month + "/" + day);

}

public static void main(String[] args) {

// 构造⽇期类型的对象 d1

Date d1 = new Date(2000,4,5);

// 打印⽇期中的内容

d1.printDate();

}

}

图片

之前我们使用Date d1 = new Date();的时候是调用的无参数的构造方法;

Date d1 = new Date(2000,4,5);为有参数的构造方法;这两种构造方法构成方法的重载

构造⽅法注意事项

1.名字必须与类名相同

2.没有返回值类型,设置为void也不⾏

3.创建对象时由编译器⾃动调⽤,并且在对象的⽣命周期内只调⽤⼀次(相当于⼈的出⽣,每个⼈只能 出⽣⼀次)

4.构造⽅法可以重载(⽤⼾根据⾃⼰的需求提供不同参数的构造⽅法

5.当只有有参数的构造方法时就不能Date d1 = new Date();这样写,要传参。

http://www.jsqmd.com/news/497680/

相关文章:

  • 第八章 贪心算法part01
  • 在浏览器控制台调试的 6 个秘密技巧
  • everything-claude-code 安装配置与使用
  • 成都智诚人力保安劳务派遣外包服务详解:就近安排找工作/工厂劳务外包派遣/工厂劳务派遣外包/工厂直招找工作/当天入职劳务派遣/选择指南 - 优质品牌商家
  • Azure DevOps:应用远程MCP服务器,提升工作效率
  • 批量结束数据库进程
  • AgentExecutor:动态决策 + 工具调用
  • 金仓数据库 SQL 防火墙:内核级防护,筑牢 SQL 注入安全防线
  • 选图表库为什么我劝ToB项目别再用犹豫了:免费ECharts,商业Highcharts
  • 基于Hadoop+Spark+Hive小红书舆情分析可视化预测系统 大数据技术 社交平台数据分析小红书评论情感分析
  • 把摸鱼数据喂AI:裁掉整个零食区——软件测试中的AI效率革命
  • 2026成都名包回收优质品牌推荐榜:江诗丹顿名表回收/浪琴名表回收/爱马仕名包回收/百达翡丽名表回收/附近名包回收/选择指南 - 优质品牌商家
  • JDK 24安装与验证教程 Windows版:解压+管理员运行+版本检查指南
  • AI换脸安全测试:GSM网络监听防御方案
  • C++关联容器进阶:unordered_map / set与详解
  • 开题卡住了?全行业通用的AI论文网站 —— 千笔AI
  • 在厕所装传感器:排便时长影响年终奖
  • 项目交付的“临门一脚”:全面认识软件验收测试
  • MySQL 中如何进行 SQL 调优?
  • 2026年AI爆发:Qwen3.5与MiniMax M2.5混合注意力模型架构深度解析!
  • 重庆专业寻人机构实力推荐榜:找人公司/重庆企业背景调查/重庆信息调查/重庆债务找人/重庆商务调查/重庆失联亲友查找/选择指南 - 优质品牌商家
  • 2026年膜结构基坑封闭优质产品推荐榜:气膜厂家/气膜基坑/气膜建筑/气膜游乐场/ETFE 膜结构建筑/基坑气膜/选择指南 - 优质品牌商家
  • Python基础学习(2)——基本数据类型
  • polar-web部分中等题目
  • 算法:用哈希求最长连续序列
  • SpringBoot+Vue2.x+MQTT+TDengine3.x搭建物联网设备管理平台
  • 2026年高稳定手游联运平台系统推荐指南:搭建手游平台/游戏联运平台/游戏聚合发行系统/H5联运平台系统/手游平台sdk/选择指南 - 优质品牌商家
  • Django个人主页网站搭建全指南
  • ### 2. `isTransformResponse: true` 或不设置时(默认) 返回的是转换后的数据,通常是 `res.data` 的内容:
  • 列表推导式详解与实战应用