zoukankan      html  css  js  c++  java
  • 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
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    你真的懂@ResponseBody和@RequestBody吗?
    Codeforces Beta Round #7 D. Palindrome Degree manacher算法+dp
    hihocoder #1032 : 最长回文子串 Manacher算法
    CSU 1808: 地铁 最短路
    UVALive 6912 Prime Switch 暴力枚举+贪心
    Codeforces Beta Round #9 (Div. 2 Only) D. How many trees? dp
    UVALive 6913 I Want That Cake 博弈+dp
    UVALive
    Codeforces Round #245 (Div. 1) B. Working out dp
    HDU 5834 Magic boy Bi Luo with his excited tree 树形dp
  • 原文地址:https://www.cnblogs.com/binbingg/p/13602168.html
Copyright © 2011-2022 走看看