• Java public 和 private 访问修饰符


    何为封装

    从事面向对象编程的 Java 程序员,不可能不知道封装,它是面向对象编程的精髓,非常重要。

    那什么是封装?字面意思就是把摆在外面的东西包起来。

    一句话,封装就是对外隐藏内部细节

    那为何要封装,也就是隐藏内部细节呢?

    道理很简单,如果你买了一部手机,你会不会关心手机内部的细节,比如电路板是如何设计的,手机程序是如何编写的;我想绝大部分人,应该只会关心手机能够对外提供哪些功能。而手机的内部细节则被手机开发商完全封装在手机的机壳里。

    想必你应该已经感受到了封装的好处,通过封装我们可以轻松优雅的玩转各种复杂设备,因为我们压根就不关心这些玩意儿是怎么造出来的,只在意提供了哪些功能,以及这些功能如何使用。

    封装的好处总结如下:

    • 封装可以隐藏大量内部细节降低使用难度(手机使用)

    • 封装可以使修改内部细节不影响外部使用(手机升级)

    • 封装可以降低内部组件之间的耦合度(手机维修)

    Java 封装

    Java 语言中提供了两个权限访问修饰符,分别是 private 和 public,它们专门实现 Java 对象的封闭和开放。

    public 访问修饰符

    public 表示公用的,也就是对外公开

    public 访问修饰符可以修饰类、成员变量和方法,代码如下:

    public class Man {
          public int age;
          public String name;
    
          public void play() {
              System.out.println("喜欢打游戏");
          }
    }
    
    

    以上代码在类、成员变量和方法中都使用了 public 权限访问修饰符,表示它们都对外开放,对象使用者可以访问它们,如下:

    Man man = new Man();
    man.age = 32;
    man.name = "张三“;
    man.play();
    

    private 访问修饰符

    private 表示私有的,也就是隐藏,不对外公开

    假如我们不想随便对外公开年龄、姓名和兴趣,那么就可以使用 private 将其隐藏起来,让对象使用者没有权限访问,如下:

    public class Man {
          private int age;
          private String name;
    
          private void play() {
              System.out.println("喜欢打游戏");
          }
    }
    
    

    还是用外部对象访问,如下:

    Man man = new Man();
    man.age = 32;
    man.name = "张三“;
    man.play();
    

    看一看结果如何

    C:UsersxubinDesktopJavaMyProjectsrcHelloWorld.java
    Error:(9, 12) java: age 在 Man 中是 private 访问控制
    Error:(10, 12) java: name 在 Man 中是 private 访问控制
    Error:(11, 12) java: play() 在 Man 中是 private 访问控制
    

    编译报错了,错误提示是 private 访问权限,外部对象禁止访问。

    Getter 访问器与 Setter 修改器

    Getter 访问器和 Setter 修改器是为private 修饰的类成员变量提供安全访问的一种方式

    public class Man {
         private int age;
         private String name;
    
         public int getAge( ) {      // Getter 访问器  
               return age;
          }
        public void setAge(int age) {// Setter 修改器  
                this.age = age;
          }
    }
    

    使用 Getter 访问器与 Setter 修改器,如下:

    Man man = new Man();
    man.setAge(32);
    System.out.println( man.getAge( ) );
    
    Getter 访问器和 Setter 修改器的作用
    • 可以为 private 修饰的属性(或成员变量)提供统 一的外界访问通道

    • 可以为外界提供访问安全性(访问条件判断)

    • 可以在访问器中设置访问权限控制或管理(实现按权限级别访问内部数据)

    总结

    在面向对象编程中,我们需要考虑哪些成员变量或方法需要对外公开,提供给对象使用者(也就是 public);哪些成员变量或方法需要隐藏细节,禁止对象使用者访问(也就是 private)。

    作者:Binge
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    Spring Batch 之 Sample(XML文件操作)(五)
    Spring Batch 之 Spring Batch 简介(一)
    Spring Batch 之 Sample(固定长格式文件读写)(六)
    Spring Batch 之 Sample(复合格式文件的读、多文件的写)(七)
    bat调用jar包的两个典型问题
    Spring Batch 之 Sample(Hello World)(三)
    开园大吉
    js中createElement方法的兼容性
    Struts2中关于"There is no Action mapped for namespace / and action name"的总结
    Spring Batch 之 框架流程简单介绍(二)
  • 原文地址:https://www.cnblogs.com/binbingg/p/13602168.html
Copyright © 2020-2023  润新知