成员变量和成员方法
1. 成员变量
解释说明
????????在类中定义的变量就是成员变量。成员变量顾名思义是属于成员(具体的对象、具体的事物)的,成员变量有初始值。
成员变量的初始值:
????????引用数据类型的初始值都是 null
,整数都是0,浮点数都是0.0,boolean类型是false,char类型是 '\u0000'
访问成员变量的语法
对象名
.
属性名
;
?示例
public static
void
main
(
String
[]
args
) {
????????//这里
p
称为对象名,跟数组名一样,本质都是变量。只是在面向对象中称之为对象名
????????Person p
=
new
Person
();
//
构建了一个具体的人,只是这个人目前还没有名字,性别和年龄
????????System
.
out
.
println
(
p
.
name
+
"\t"
+
p
.
sex
+
"\t"
+
p
.
age
);
????????p
.
name
=
"
刘德华
"
;
????????p
.
sex
=
"
男
"
;
????????p
.
age
=
53
;
????????System
.
out
.
println
(
p
.
name
+
"\t"
+
p
.
sex
+
"\t"
+
p
.
age
);
????????Person p1
=
new
Person
();
????????p1
.
name
=
"
张学友
"
;
????????p1
.
sex
=
"
男
"
;
????????p1
.
age
=
52
;
????????System
.
out
.
println
(
p1
.
name
+
"\t"
+
p1
.
sex
+
"\t"
+
p1
.
age
);
????????Person p2
=
new
Person
();
????????p2
.
name
=
"
黎明
"
;
????????p2
.
sex
=
"
男
"
;
????????p2
.
age
=
45
;
????????System
.
out
.
println
(
p2
.
name
+
"\t"
+
p2
.
sex
+
"\t"
+
p2
.
age
);
}
2. 成员方法
解释说明
????????在类中定义的方法就是成员方法。成员方法顾名思义是属于成员(具体的对象、具体的事物)的。
调用成员方法的语法
//[]
中内容可有可无
对象名
.
方法名
([
参数列表
]);
示例
/**
*
人类
*/
public class
Person
{
????????public
String
name
;
//
姓名
????????public
String
sex
;
//
性别
????????public
int
age
;
//
年龄
????????public
void
eat
(){
????????????????System
.
out
.
println
(
age
+
"
岁的
"
+
sex
+
"
性同志
"
+
name
+
"
在吃饭
"
);
????????}
????????public
void
sleep
(){
????????????????System
.
out
.
println
(
age
+
"
岁的
"
+
sex
+
"
性同志
"
+
name
+
"
在睡觉
"
);
????????}
????????public
void
work
(){
????????????????System
.
out
.
println
(
age
+
"
岁的
"
+
sex
+
"
性同志
"
+
name
+
"
在工作
"
);
????????}
}
public class
PersonTest
{
????????public static
void
main
(
String
[]
args
) {
????????//这里
p
称为对象名,跟数组名一样,本质都是变量。只是在面向对象中称之为对象名
????????Person p
=
new
Person
();
//
构建了一个具体的人,只是这个人目前还没有名字,性别和年龄
????????System
.
out
.
println
(
p
.
name
+
"\t"
+
p
.
sex
+
"\t"
+
p
.
age
);
????????p
.
name
=
"
刘德华
"
;
????????p
.
sex
=
"
男
"
;
????????p
.
age
=
53
;
????????System
.
out
.
println
(
p
.
name
+
"\t"
+
p
.
sex
+
"\t"
+
p
.
age
);
????????p
.
eat
();
????????p
.
sleep
();
????????p
.
work
();
????????Person p1
=
new
Person
();
????????p1
.
name
=
"
张学友
"
;
????????p1
.
sex
=
"
男
"
;
????????p1
.
age
=
52
;
????????System
.
out
.
println
(
p1
.
name
+
"\t"
+
p1
.
sex
+
"\t"
+
p1
.
age
);
????????p1
.
eat
();
????????p1
.
sleep
();
????????p1
.
work
();
????????Person p2
=
new
Person
();
????????p2
.
name
=
"
黎明
"
;
????????p2
.
sex
=
"
男
"
;
????????p2
.
age
=
45
;
????????System
.
out
.
println
(
p2
.
name
+
"\t"
+
p2
.
sex
+
"\t"
+
p2
.
age
);
????????p2
.
eat
();
????????p2
.
sleep
();
????????p2
.
work
();
}
3. 成员变量和局部变量
解释说明
????????局部变量就是在方法内部定义的变量。局部变量没有初始值,因此,局部变量在使用之前必须完成初始化操作。当局部变量与成员变量同名时,局部变量的优先级更高。
示例
public
void
show
(){
//
展示
????????String
name
;
//
局部变量,没有初始值
????????System
.
out
.
println
(
name
+
brand
+
"\t"
+
type
+
"\t"
+
price
);
}
public
void
show
(){
//
展示
????????//因此局部变量的作用范围更小,就在局部变量所定义的方法内,
????????//因此局部变量在方法内的优先级要高于成员变量
????????String
brand
=
"
奔驰
"
;
????????System
.
out
.
println
(
brand
+
"\t"
+
type
+
"\t"
+
price
);
}
4. this 关键字
思考
????????在方法中,如果局部变量和成员变量同名,此时又想使用成员变量,怎么办呢?
????????此时需要使用this
关键字来解决。
????????this关键字表示的是当前对象(使用
new创建出来的对象)
示例
public class
Car
{
????????public
String
brand
;
//
品牌
????????public
String
type
;
//
型号
????????public
double
price
;
//
价格
????????public
void
start
(){
????????????????System
.
out
.
println
(
"
汽车启动
"
);
????????}
????????public
void
speedUp
(){
????????????????System
.
out
.
println
(
"
汽车加速
"
);
????????}
????????public
void
stop
(){
????????????????System
.
out
.
println
(
"
汽车刹车
"
);
????????}
????????public
void
show
(){
//
展示
????????????????//因此局部变量的作用范围更小,就在局部变量所定义的方法内,
????????????????//因此局部变量在方法内的优先级要高于成员变量
????????????????String
brand
=
"
奔驰
"
;
????????????????System
.
out
.
println
(
this
.
brand
+
"\t"
+
type
+
"\t"
+
price
);
????????}
}
public class
CarTest
{
????????public static
void
main
(
String
[]
args
) {
????????????????Car c
=
new
Car
();
// this => c
????????????????c
.
brand
=
"
奥迪
"
;
????????????????c
.
type
=
"A8"
;
????????????????c
.
price
=
100000
;
????????????????c
.
show
();
????????????????Car c1
=
new
Car
();
// this => c1
????????????????c1
.
brand
=
"
大众
"
;
????????????????c1
.
type
=
"
保时捷卡宴
"
;
????????????????c1
.
price
=
150000
;
????????????????c1
.
show
();
????????}
}
this还可以用来调用成员的方法
/**
*
人类
*/
public class
Person
{
????????public
String
name
;
//
姓名
????????public
String
sex
;
//
性别
????????public
int
age
;
//
年龄
????????public
void
eat
(){
????????????????System
.
out
.
println
(
age
+
"
岁的
"
+
sex
+
"
性同志
"
+
name
+
"
在吃饭
"
);
????????????????work
();
//
相当于
this.work();
????????}
????????public
void
sleep
(){
????????????????System
.
out
.
println
(
age
+
"
岁的
"
+
sex
+
"
性同志
"
+
name
+
"
在睡觉
"
);
????????????????work
();
//
相当于
this.work();
????????}
????????public
void
work
(){
????????????????System
.
out
.
println
(
age
+
"
岁的
"
+
sex
+
"
性同志
"
+
name
+
"
在工作
"
);
????????}
}