zoukankan      html  css  js  c++  java
  • 面向对象(封装)get set的由来

    封装:是指隐藏对象的属性和实现细节,进对外提供公共访问方式

    好处:将变化隔离。便于使用,提高重用性,提高安全性

    封装原则:将不需要对外提供的额内容隐藏起来,把属性都隐藏,提供公共方法对其访问

     1 package com_package2;
     2 
     3     class Age {
     4     int age;
     5    /*/ public void Haha(int t)
     6     //{   if(t>=0)
     7    //     age=t;
     8        else
     9         age=0;
    10     }
    11    // public int  getHaha(int t)
    12   //  {
    13    //     return t;
    14         
    15    // }**/
    16     void speak()
    17     {
    18         System.out.println("age="+age);
    19         
    20     }
    21 
    22 }

    首先注意观察:Age类中的属性age没有说公有,也没有说私有,再加上这个类也没说是私有和公有,那么这个属性是不受保护的,创建对象后,age是可以被改动也可以被访问的

    但是如果age属性变成了private那么AgeDemo是无法访问到age属性的

     1 package com_package2;
     2 
     3 public class AgeDemo {
     4     public static void main(String[]args)
     5     {
     6         Age a = new Age();//创建对象
     7         //a.Haha(20);
     8         a.age=20;//访问Age类中的年龄属性
     9         a.speak();//访问Age类中的speak方法
    10         
    11     }
    12 
    13 }

    这里的age是不被保护的

    再来看,要是想要访问private属性,那么,可以在中间加一个给属性赋值的public方法如下:

     1 package com_package2;
     2 
     3     class Age {
     4     private int age;
     5    public void Haha(int t)
     6    {   age=t;
     7     }
     8    // public int  getHaha(int t)
     9   //  {
    10    //     return t;
    11         
    12    // }
    13     void speak()
    14     {
    15         System.out.println("age="+age);
    16         
    17     }
    18 
    19 }

    在这里面,age是私有的其他类无法访问,但是加了一个public方法来对age属性进行赋值

     1 package com_package2;
     2 
     3 public class AgeDemo {
     4     public static void main(String[]args)
     5     {
     6         Age a = new Age();
     7         //a.Haha(20);
     8         a.Haha(20);
     9         a.speak();
    10         
    11     }
    12 
    13 }

    通过Haha对age进行访问得到age=20

    在此基础上可以增加一点算法:

     1 package com_package2;
     2 
     3     class Age {
     4     private int age;
     5    public void Haha(int t)
     6    {  if(t>=0&&t<=130)
     7        age=t;
     8       else
     9        age=-1;
    10     }
    11    // public int  getHaha(int t)
    12   //  {
    13    //     return t;
    14         
    15    // }
    16     void speak()
    17     {
    18         System.out.println("age="+age);
    19         
    20     }
    21 
    22 }
     1 package com_package2;
     2 
     3 public class AgeDemo {
     4     public static void main(String[]args)
     5     {
     6         Age a = new Age();
     7         //a.Haha(20);
     8         a.Haha(-20);
     9         a.speak();
    10         
    11     }
    12 
    13 }

    这样就可以判断年龄的可能性  得-1

    由此演变成get set方法:

     1 package com_package2;
     2 
     3     class Age {
     4     private int age;
     5    public void setAge(int t)
     6    {  if(t>=0&&t<=130)
     7        age=t;
     8       else
     9        age=-1;
    10     }
    11     public int  getAge(int t)
    12     {
    13         return t;
    14         
    15     }
    16     void speak()
    17     {
    18         System.out.println("age="+age);
    19         
    20     }
    21 
    22 }
     1 package com_package2;
     2 
     3 public class AgeDemo {
     4     public static void main(String[]args)
     5     {
     6         Age a = new Age();
     7         //a.Haha(20);
     8         a.setAge(-20);
     9         a.speak();
    10         
    11     }
    12 
    13 }

    这样的演变就足以说明set,get方法的由来。通常情况下,会将类中的成员变量私有化,为了避免属性直接被访问导致数据错误,并对外界听了公共的访问方式,对该

    属性进行访问,这样做的好处是:可以对属性进行可控,而对属性访问的公共方法名称规范定义的格式是:set属性(),get属性()。当然get(),set()都可以在系统中手动生成。

    关于这两个方法:Java中的私有属性set()是给属性赋值的,get()是取得属性值的
    被设置和存取的属性一般是私有
    主要是起到封装的作用,不允许直接对属性操作
    set()和get()不一定同时存在,看程序需求

  • 相关阅读:
    使用Jquery Mobile设计Android通讯录
    jQuery Mobile中文手册:开发入门
    分享15款为jQuery Mobile定制的插件
    18个jQuery Mobile开发贴士和教程
    关于altera fpga的io时序优化问题
    关于simulink hdlcoder的优化问题
    关于matlab中定点数overflow的处理办法
    跨时钟域问题(转载)
    matlab中卷积编码参数的理解
    ft,dtft,dft的关系(转载)
  • 原文地址:https://www.cnblogs.com/mmlovejj/p/4422573.html
Copyright © 2011-2022 走看看