成员变量
- 在Java中对象的属性也称为成员变量。例如,首先定义一个图书类,成员变量对应于类对象的属性,
在Book类中设置一个成员变量name,对应于图书名称。
package com.company;
public class Book {
private String name; //定义一个String型的成员变量
public String getName(){ //定义一个getName()方法
int id=0;
setName("Java");
return id+this.name;
}
private void setName(String name){ //定义一个setName()方法
this.name=name; //将参数赋予类中的成员变量
}
public Book getBook(){
return this; //返回Book类引用
}
}
成员方法
- 以Book类为例,它包含getName()和setName()两个方法
- 定义成员方法的语法格式如下:
权限修饰符 返回值类型 方法名 (参数类型 参数名){
.....//方法体
return 返回值 ;
}
注意:Java中的成员方法无返回值,可以使用void关键字表示
权限修饰符
当声明类时不使用public。protected和private修饰符设置类的权限,则这个类预设为包存取范围,即只有一个包中的类可以调用这个类的成员变量或成员方法
局部变量
- 如果在成员方法内定义一个变量,那么这个变量被称为局部变量
- 局部变量是在方法被执行时创建,在方法执行结束时被销毁,局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误
this关键字
在项目中创建一个类文件,该类中定义了setName(),并将方法的参数值赋予类中的成员变量
private void setName(String name){ //定义一个setName()方法
this.name=name; //**将参数值赋予类中的成员变量**
}
- 在Java语言中规定使用this关键字来代表本类对象的引用,this关键字被隐式地用于引用对象的成员变量和方法。
- 在上述代码中,this.name指的就是Book类中的name成员变量,而this.name=name语句中的第二个name指的是形参name,实际上setName()方法实现的功能就是将形参name的值赋予成员变量name
既然this关键字和对象都可以调用成员变量和成员方法,那么this关键字与对象之间具有怎样的关系呢?
上述代码中,如果省略this关键字直接写成 name=name,那只是把参数name赋值给参数变量本身而已,成员变量name的值没有改变,因为参数name在方法的作用域中覆盖了成员变量name