JavaSE-7.4【封装、private、this】

 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 }

 

posted @ 2021-05-22 19:27  yub4by  阅读(67)  评论(0编辑  收藏  举报