002.面向对象的三大特性之封装

2018-10-29 15:31:44来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

1.封装是什么?以及为什么要进行封装?

   通常情况下可以给成员变量赋值一些合法但不合理的数值,这种情况在编译阶段和运行阶段都不会报错或给出任何的提示信息,此数值虽然合法但与现实生活不符;为了避免上述问题的发生,就需要对成员变量进行密封包装处理来保证该成员变量的合法合理性,这种机制就叫做封装。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。

2.如何进行封装?
  (1)私有化成员变量,使用private关键字修饰;
  (2)提供公有的get和set方法,在方法体中进行合理值的判断,使用public关键字修饰;
  (3)在构造方法中使用set方法进行合理值的判断;
 
3.事例如下/*Person.java*/
 1 /*
 2      编程实现Person类的封装
 3  */
 4 public class Person{
 5     //1.私有化成员变量,使用private关键字修饰
 6     private String name; 
 7     private int age;
 8     private String country;
 9     //使用static关键字修饰成员变量表示提升为类层级只有一份被所有对象共享
10     //public static String country;
11 
12     //3.在构造方法中调用set方法进行合理值的判断
13     public Person(){
14     }
15     public Person(String name, int age, String country){
16         setName(name);
17         setAge(age);
18         setCountry(country);
19     }
20 
21     //2.提供公有的get和set方法,在方法体中进行合理值的判断
22     public String getName(){
23         return name;
24     }
25     public void setName(String name){
26         this.name = name;
27     }
28     public int getAge(){
29         return age;
30     }
31     public void setAge(int age){
32         if(age > 0 && age < 150){
33             this.age = age;
34         }else{
35             System.out.println("年龄不合理!!!");
36         }
37     }
38     public String getCountry(){
39         return country;
40     }
41     public void setCountry(String country){
42         this.country = country;
43     }
44 
45     public void show(){
46         System.out.println("我是" + getName() + ",今年" + getAge() + "岁了,来自" + getCountry() + "!");
47     }
48 
49     //自定义成员方法描述吃饭的行为
50     public void eat(String food){
51         System.out.println(food + "真好吃!");
52     }
53     //自定义成员方法描述娱乐的行为
54     public void play(String game){
55         System.out.println(game + "真好玩!");
56     }
57 }
View Code

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:github常用命令

下一篇:关于byte的取值范围(-128~127)