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()不一定同时存在,看程序需求

  • 相关阅读:
    ORACLE 查看进程数,已执行任务数, 剩余任务数,删除指定任务
    ORACLE 收集统计整个用户数据
    解决Hystrix dashboard Turbine 一直 Loading…… 及其他坑
    利用 Maven 构造 Spring Cloud 微服务架构 模块使用 spring Boot构建
    AES加解密
    JAVA POI XSSFWorkbook导出扩展名为xlsx的Excel,附带weblogic 项目导出Excel文件错误的解决方案
    JAVA 文件的上传下载
    shell启停服务脚本模板
    JAVA 设计模式之 原型模式详解
    JAVA 设计模式之 工厂模式详解
  • 原文地址:https://www.cnblogs.com/mmlovejj/p/4422573.html
Copyright © 2011-2022 走看看