私有private
先从描述一个人的案例说起
定义一个person类
属性:年龄 姓名
行为:判断年龄
怎么才不能让外界任意的去访问使用person类中的属性和行为呢?
所以
需要使用一个Java中的关键字也是一个修饰符 private(私有,权限修饰符)。只要将Person的属性和行为私有起来,这样就无法直接访问。**
年龄已被私有,错误的值无法赋值,可是正确的值也赋值不了,这样还是不行,那肿么办呢?按照之前所学习的封装的原理,隐藏后,还需要提供访问方式。只要对外提供可以访问的方法,让其他程序访问这些方法。同时在方法中可以对数据进行验证。
一般对成员属性的访问动作:赋值(设置 set),取值(获取 get),因此对私有的变量访问的方式可以提供对应的 setXxx或者getXxx的方法。
public class Person {
// 私有属性
private int age; // 年龄
private String name; // 姓名
// set赋值 get获取值
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 共有方法判断年龄
/**
* 定义方法判断年龄 大于 返回1 等于 返回0 小于 返回-1
*
* 当前对象和传入进来的对象的年龄做比较即可
*/
// 当前对象和传入进来的对象的年龄做比较即可
public int showage(Person person) {
if (person != null) {
// 当前对象和传入进来的person对象 的年龄进行对比
if (this.getAge() > person.getAge()) {
return 1;
} else if (this.getAge() == person.getAge()) {
return 0;
} else {
return -1;
}
}
return 0;
}
}
这里我们建一个测试类进行测试
注意:
类中不需要对外提供的内容都私有化,包括属性和方法。
以后再描述事物,属性都私有化,并提供setXxx getXxx方法对其进行访问。
私有仅仅是封装的体现形式而已。
public class TestPerson {
public static void main(String[] args) {
// 创建一个人
Person person1 = new Person();
//set进行赋值
person1.setAge(20);
person1.setName("小明");
//创建第二个人
Person person2 = new Person();
person2.setAge(20);
person2.setName("小红");
//将引用的方法判断值 赋给一个变量
int x = person1.showage(person2);
if (x==1) {
//get获取值
System.out.println(person1.getName()+"大于"+person2.getName());
}else if (x==0) {
System.out.println(person1.getName()+"和"+person2.getName()+"同龄");
}else {
System.out.println(person1.getName()+"小于"+person2.getName());
}
}
}
运行结果如下