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 }