如果你在定义一个变量的时候前面加入了private
关键字,那么这个关键字在本类中可以随意访问,但是,超出了本类范围之外就不可以直接访问了。
可以使用get/set方法间接访问:
get/set方法格式为get/set+变量名(变量名首字母需要大写)
举一个例子,这个例子是将age变量前加入private关键字,然后在第二个类当中使用name与age方法:
public class Person {
String name;
private int age;
public void show(){
System.out.println("我叫"+name+"今年"+age);
}
// 专门用于向age设置数据↓↓set必须有参数无返回,参数类型必须和set的对象一直名称规则为set首字母大写
public void setAge(int num){
if (num<100 && num>=0){
age = num;
}else{
System.out.println("年龄不合理");
}
}
// 这个成员方法,专门用于获取age的数据↓↓get什么必须没有参数有返回值,返回值类型需要和成员变量对应,名称必须交get+首字母大写
public int getAge(){
return age;
}
}
第二个类的直接访问与间接访问:
public class Demo01person {
public static void main(String[] args) {
Person person = new Person();
person.show();
person.name = "yibole";
person.setAge(20);//这就是间接访问
person.show();
}
}
间接访问private成员变量,就是定义一对Getter/Setter方法
对于基本类型当中的boolean值,Getter方法一定要写成isXxx的形式,而setXxx类型不变
private boolean male;//是不是男的
public void setMale(boolean b){
male = b;
}
public boolean isMale(){
return male;
}
this关键字的作用
当方法的局部变量和类的成员变量重名的时候,根据“就近原则,优先使用局部变量,
如果需要访问本类当中的成员变量(局部变量),需要使用格式:
this.成员变量名
通过谁调用的方法,谁就是this,this一定是写在方法中的
public class Person {
String name;
public void sayHello(String name){
System.out.println(name+",你好,我是"+this.name);
}
}
这时候调用person.name
并赋值“hanwenwen”和调用person.sayhello
并赋值"yibole"就会出现hanwenwen,你好,我是yibole