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
只能引用当前对象,不能再引用其他对象