zoukankan      html  css  js  c++  java
  • [05] 利用private来封装


    我们知道,面向对象开发的三大特点是:封装性、继承性、多态性

    所谓封装性,实际上是表达了一种信息隐藏从表面上来阐述,就是使用private修饰符来对属性或者方法进行信息隐藏,而使用public的方法控制访问

    例如,属性使用private,方法使用public,则:
    public class Person { 
    
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    }

    那么如上,这样一来,你想获取一个Person对象的name属性的话,你就不能使用类似于 zhangsan.name 的方式,而必须使用 zhangsan.getName()

    这样是为了更好的进行数据隐藏,要知道,在程序开发的过程中是靠多人协作完成的,也就是说程序员A可能会用到程序员B写的某个方法,如果程序员B的所有属性和方法都是暴露的,那么程序员A在使用时完全可能会因为不熟悉(因为毕竟不是他自己写的)而错误调用方法,或者更改了属性,最终就会出现bug。所以使用封装,我只暴露出来别人需要用到的方法,其他的他们无法访问,那么就大大降低了误用的风险。

    另外,数据的封装,如最常见的各类属性用private限制,而使用public开放的getter和setter来操作,因为很多时候并没有设定特殊的动作,让人感到多此一举,实际不然。

    getter和setter真正的好处在于,万一某天你发现这个变量需要限制,那么你只需要更改getter和setter中的代码,而其他已经通过getter和setter来调用属性的地方不用重复地去修改。

    想象一下你所有的属性都是public,其他的地方直接调用,当有一天你需要限制变量,如某属性不能为负数了,怎么办?每个调用的地方修改一下,去使用if语句判断是否大于0,那假如我调用了1000个地方呢?10000个地方呢?

    最后,对于封装的说明,这位网友的博客进行了更详细的说明,推荐一波:java提高篇(一)-----理解java的三大特性之封装


  • 相关阅读:
    系统数据库如何恢复Master数据库
    在Orderby子句中使用CASE 语句
    SQL NOTECURSOR
    MVC 中静态文件部分动态化
    SQL NOTCTE
    Get data style from Excel
    SQL NOTPARTITION
    LAMDA表达式学习
    SQL NOTEVARIABLE
    起II6.0中使用windows2003自带的虚拟主机管理系统
  • 原文地址:https://www.cnblogs.com/deng-cc/p/7459376.html
Copyright © 2011-2022 走看看