• 面向对象(封装)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()不一定同时存在,看程序需求

  • 相关阅读:
    How to change hostname on SLE
    How to install starDIct on suse OS?
    python logging usage
    How to reset password for unknow root
    How to use wget ?
    How to only capute sub-matched character by grep
    How to inspect who is caller of func and who is the class of instance
    How to use groovy script on jenkins
    Vim ide for shell development
    linux高性能服务器编程 (二) --IP协议详解
  • 原文地址:https://www.cnblogs.com/mmlovejj/p/4422573.html
Copyright © 2020-2023  润新知