Java之封装
封装
封装:将功能封装到方法(最基本的封装体)时,将方法封装到类中。
封装的优势:①提高代码的复用性,提高代码的可读性。②隐藏了实现实现 private(私有,权限修饰符),可以对外提供访问(通过set/get方法)。③保证了安全性。
在类中,成员变量,成员方法为存值,取值,判定。
具体方法的调用、操作打印、流程控制等尽量在main中实现。
1 举例:private是私有的一种体现形式 2 class Person { 3 // 私有成员变量 4 private int age; 5 private String name; 6 // 对外提供设置成员变量的方法 7 public void setAge(int a) { 8 // 由于是设置成员变量的值,这里可以加入数据的验证 9 if (a < 0 || a > 130) { 10 System.out.println(a + "不符合年龄的数据范围"); 11 return; 12 } 13 age = a; 14 } 15 // 对外提供访问成员变量的方法 16 public void getAge() { 17 return age; 18 } 19 }
对成员变量,使用private修饰私有化。使用set和get方法,进行赋值,调用
注:在eclipse中在编码区,右击空白,选择source,再选择generate settes and getters,快速创建设置和访问方法。
1 class Person { 2 // 私有成员变量 3 private int age; 4 private String name; 5 6 // 对外提供设置成员变量的方法 7 public void setAge(int a) { 8 // 由于是设置成员变量的值,这里可以加入数据的验证 9 if (a < 0 || a > 130) { 10 System.out.println(a + "不符合年龄的数据范围"); 11 return; 12 } 13 age = a; 14 } 15 16 // 对外提供访问成员变量的方法 17 public void getAge() { 18 return age; 19 } 20 }
this
注:this如果没有调用,则指向类,如果有对象调用,则指向对象。
举例:判断同龄人(一个通过调用方法传入,一个通过参数传入)
1 class Person { 2 private int age; 3 private String name; 4 5 public int getAge() { 6 return age; 7 } 8 9 public void setAge(int age) { 10 this.age = age; 11 } 12 13 public String getName() { 14 return name; 15 } 16 17 public void setName(String name) { 18 this.name = name; 19 } 20 21 public void speak() { 22 System.out.println("name=" + this.name + ",age=" + this.age); 23 } 24 25 // 判断是否为同龄人 26 public boolean equalsAge(Person p) { 27 // 使用当前调用该equalsAge方法对象的age和传递进来p的age进行比较 28 // 由于无法确定具体是哪一个对象调用equalsAge方法,这里就可以使用this来代替 29 /* 30 * if(this.age == p.age) { return true; } return false; 31 */ 32 return this.age == p.age; 33 } 34 }