JAVA类和对象

本文详细解释了Java中的类如何用于描述对象的属性和功能,介绍了如何使用`class`关键字定义类,以及类的实例化过程。重点讲解了`this`引用的作用,包括其类型、使用范围和在成员方法中如何确保正确地引用当前对象。
摘要由CSDN通过智能技术生成

1.类定义和使用

类是用来对一个实体 ( 对象 ) 来进行描述的 ,主要描述该实体 ( 对象 ) 具有哪些属性 ( 外观尺寸等 ) ,哪些功能 ( 用来干 啥) ,描述完成后计算机就可以识别了。
比如:洗衣机,它是一个品牌,在 Java 中可以将其看成是一个类别。
属性:产品品牌,型号,产品重量,外观尺寸,颜色 ...
功能:洗衣,烘干、定时 ....
java 中定义类时需要用到 class 关键字,具体语法如下
// 创建类
class ClassName {
field ; // 字段 ( 属性 ) 或者 成员变量
method ; // 行为 或者 成员方法
}
class 定义类的关键字, ClassName 为类的名字, {} 中为类的主体。
class WashMachine {
public String brand ; // 品牌
public String type ; // 型号
public double weight ; // 重量
public void washClothes (){ 
System . out . println ( " 洗衣功能 " );
}
public void dryClothes (){ 
System . out . println ( " 脱水功能 " );
}
public void setTime (){ 
System . out . println ( " 定时功能 " );
}
}

2.类的实例化

定义了一个类,就相当于在计算机中定义了一种新的类型 ,与 int double 类似,只不过 int double java 语言自
带的内置类型,而类是用户自定义了一个新的类型,比如上述的: PetDog 类和 Student 类。它们都是类 ( 一种新定
义的类型 ) 有了这些自定义的类型之后,就可以使用这些类来定义实例 ( 或者称为对象 )
用类类型创建对象的过程,称为类的实例化 ,在 java 中采用 new 关键字,配合类名来实例化对象。
class WashMachine {
public String name ; // 品牌
public void text1 (){
System . out . println ( " 非常好 " );
}
public void text2 (){ 
System . out . println ( " 一般 " );
}
public void text3 (){ 
System . out . println ( " " );
}
}
public class Main {
public static void main ( String [] args ) {
         WashMachine wash = new WashMachine(); // 通过 new 实例化对象
         wash.name = “haier”;
        wash.text1();
}
}
输出结果:
haier非常好

3.this引用

先看一个日期类的例子:

public class Date {
public int year ;
public int month ;
public int day ;
public void setDay ( int y , int m , int d ){
year = y ;
month = m ;
day = d ;
}
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 ( 2024 , 3 , 1 );
d2 . setDay ( 2024 , 3 , 2 );
d3 . setDay ( 2024 , 3 , 3 );
// 打印日期中的内容
d1 . printDate ();
d2 . printDate ();
d3 . printDate ();
}
}
输出结果:
2024/3/1
2024/3/2
2024/3/3
但是
如果画圈部分改为:
public void setDay ( int y , int m , int d ){
year = y ear
month = month ;
day = day ;
那么在不改变其他代码的条件下输出结果为:
0/0/0
0/0/0
0/0/0
产生这样的原因是因为在java中传进去函数的数值为形参而不是实参所以无法改变实参,所以year,month,day的数值为初始化的数值为0
要想解决这一个方法就需要用到 this 引用
this 引用指向当前对象 ( 成员方法运行时调用该成员方法的对象 ) ,在成员方法中所有成员变量的操作,都是通过该 引用去访问 。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
public void setDay ( int y , int m , int d ){
year = y ear
month = month ;
day = day ;
把以上代码改为:
public void setDay ( int year , int month , int day ){
this . year = year ;
this . month = month ;
this . day = day ;
}
输出结果:
2024/3/1
2024/3/2
2024/3/3
1. this 的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
2. this 只能在 " 成员方法 " 中使用
3. " 成员方法 " 中, this 只能引用当前对象,不能再引用其他对象
  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值