1 package day7;
2
3 /**
4 * @author haifei
5 *
6 */
7
8 /*
9 4 封装
10
11 private关键字
12 private是一个权限修饰符,可以用来修饰成员(成员变量,成员方法);
13 被private修饰的成员,只能在本类进行访问;
14 针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作:
15 提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰
16 提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰
17
18 this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)
19 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
20 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量
21 this代表当前调用方法的引用,哪个对象调用的方法,this就代表哪一个对象
22
23 1. 封装概述
24 是面向对象三大特征之一(封装,继承,多态) 是面向对象编程语言对客观世界的模拟,
25 客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
26 2. 封装原则
27 将类的某些信息隐藏在类内部,不允许外部程序直接访问,
28 而是通过该类提供的方法来实现对隐藏信息的操作和访问 成员变量private,提供对应的getXxx()/setXxx()方法
29 3. 封装好处
30 通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性
31 */
32
33
34 public class People {
35 // String name;
36 // int age;
37
38 private String name;
39 private int age;
40
41 /*public void setAge(int _age){
42 if(_age<0 || _age>120){
43 System.out.println("给出的年龄有误");
44 }else {
45 age = _age;
46 }
47 }
48 public int getAge(){
49 return age;
50 }
51 public void setName(String _name){
52 name = _name;
53 }
54 public String getName(){
55 return name;
56 }*/
57
58 /*public void setAge(int age){
59 if(age<0 || age>120){
60 System.out.println("给出的年龄有误");
61 }else {
62 age = age; //error,系统无法判断哪个是成员变量哪个是局部变量
63 }
64 }*/
65 public void setAge(int age){ //局部变量
66 if(age<0 || age>120){
67 System.out.println("给出的年龄有误");
68 }else {
69 this.age = age; //ok this指明成员变量
70 }
71 }
72 public int getAge(){
73 return age;
74 }
75 /*public void setName(String name){
76 name = name;
77 }*/
78 public void setName(String name){
79 this.name = name;
80 }
81 public String getName(){
82 return name;
83 }
84
85 public void show(){
86 System.out.println(name + ", " + age);
87 }
88 }
1 package day7;
2
3 public class PeopleDemo {
4 public static void main(String[] args) {
5 /*People p = new People();
6 p.name = "lili";
7 // p.age = 24; //ok
8 p.age = -24; //通过对象名直接访问成员变量的这种方式会存在数据安全隐患,应设法不允许外界直接访问成员变量
9 p.show();*/
10
11 People p = new People();
12 p.setName("yangzi");
13 p.setAge(20);
14 // p.setAge(-20);
15 p.show();
16 System.out.println(p.getName() + ", " + p.getAge());
17 }
18 }
