封装

概念

  指隐藏对象的属性和实现细节,仅对外提供公共访问方式

好处

  将变化隔离

  便于使用

  提高重要性

    提高安全性

举例

 一个人去电脑店修电脑,修电脑的人只需要知道电脑店的人可以给他修好,但是具体的修的细节不需要那个人知道,那个细节就是封装的内容,用private

private

  私有,权限修饰符,用于修饰类中的成员(成员变量、成员函数)

  私有只在本类中有效

  目的是不提供给外类使用,仅自己内部用

注意:私有仅仅是封装的一种表现形式

 1 class Person
 2 {
 3 private int age;
 4   void speak()
 5   {
 6   System.out.println("age="+age);
 7   }
 8 }
 9 class PersonDemo
10 {
11   public static void main(String[] args)
12   {
13   Person p = new Person();
14   p.age=20; //无法访问,因为前面有private类  只有在本类中有效
15   }
16 }

将age私有化后,类以外即使建立了对象也不能直接访问,但是人应该有年龄,就需要在Person类中提供对应访问age的方式

解决方法一

 1 class Person
 2 {
 3     private int age;
 4 
 5 public void setAge(int a){
 6     age=a;
 7 }
 8 
 9 void speak()
10 {
11     System.out.println("age="+age);
12 }
13 }
14     class PersonDemo
15 {
16     public static void main(String[] args)
17 {
18     Person p = new Person();
19     p.setAge(20);   //可以输出
20 }
21 }

之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句,对访问的数据进行操作,提高代码健壮性

 1 class Person
 2 {
 3     private int age;
 4 
 5 public void setAge(int a){
 6     if(a>0){    
 7      age=a;
 8      speak();
 9    }else{
10    System.out.pprintln("非法年纪");
11    }
12 }
13 
14 void speak()
15 {
16     System.out.println("age="+age);
17 }
18 }
19     class PersonDemo
20 {
21     public static void main(String[] args)
22 {
23     Person p = new Person();
24     p.setAge(20);   //可以输出
25 }
26 }

内存解析

注意:a只是赋值给age而不指向堆,哪个对象在运行值就赋给谁

解决方法二

 1 class Person
 2 {
 3     private int age;
 4 
 5 public void getAge(int a){
 6     return age;
 7 }
 8 
 9 void speak()
10 {
11     System.out.println("age="+age);
12 }
13 }
14     class PersonDemo
15 {
16     public static void main(String[] args)
17 {
18     Person p = new Person();
19     speak();   //可以输出
20 }
21 }

 

posted @ 2016-08-05 17:18  IT蓄水池  阅读(128)  评论(0)    收藏  举报