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 }
原文地址:https://www.cnblogs.com/mlf19920916/p/12070482.html