private
private关键字:
-是一个权限修饰符
-用于修饰成员函数和成员变量
-被私有的成员只在本类中有效
常用之一:将成员变量私有化,对外提供对应的set,get方法对其进行使用。提高对数据访问的安全性。
下面通过例子理解一下:
class Person{
private String name;
private int age;
//获取name的值
public String getName() {
return name;
}
//设置name的值
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
if(age <0||age>150){
System.out.println("年龄不合法");
}
}
public void show(){
System.out.println(name+","+age+"岁,喜欢学Java");
}
}
class PrivateDemo{
public static void main(String[] args) {
Person p=new Person();
//调用方法的语法是实例变量.方法名(参数);。例如:ming.setName("Xiao Ming");。
p.setName("小明");
p.setAge(18);
p.show();//结果:小明,20岁,爱学Java
p.setAge(-1);//年龄不合法
}
}
总结:虽然外部代码不能直接修改private字段,但是,外部代码可以调用方法setName()和setAge()来间接修改private字段。在方法内部,我们就有机会检查参数对不对。比如,setAge()就会检查传入的参数,参数超出了范围,直接报错(用到后面学习的异常相关知识)这样,外部代码就没有任何机会把age设置成不合理的值。
对setName()方法同样可以做检查,例如,不允许传入null和空字符串:(借鉴廖雪峰老师的语言)
同上可得
定义方法格式:
修饰符 方法返回类型 方法名(方法参数列表) {
若干方法语句;
return 方法返回值;
}
代码例子:
public void setAge(int age) {
this.age = age;
if(age <0||age>150){
System.out.println("年龄不合法");
}
}
方法返回值通过return语句实现,如果没有返回值,返回类型设置为void,可以省略return。