zoukankan      html  css  js  c++  java
  • java 理解java的三大特性之封装

    使用封装有三大好处:

              1、良好的封装能够减少耦合。

               2、类内部的结构可以自由修改。

              3、可以对成员进行更精确的控制。

              4、隐藏信息,实现细节。

    public class Wife {  
        private String name;  
        private int age;  
        private String sex;  
        private Husband husband;  
      
        public String getName() {  
            return name;  
        }  
      
        public void setName(String name) {  
            this.name = name;  
        }  
      
        public String getSex() {  
            return sex;  
        }  
      
        public void setSex(String sex) {  
            this.sex = sex;  
        }  
      
        public void setAge(int age) {  
            this.age = age;  
        }  
      
        public void setHusband(Husband husband) {  
            this.husband = husband;  
        }  
      
        public Husband getHusband() {  
            return husband;  
        }  
          
    }  
    

      

    所以封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,

    如果不想被外界方法,我们大可不必提供方法给外界访问。

    但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。

    但是那天如果我们需要修改Husband,例如将age修改为String类型的呢?

    你只有一处使用了这个类还好,如果你有几十个甚至上百个这样地方,你是不是要改到崩溃。

    如果使用了封装,我们完全可以不需要做任何修改,只需要稍微改变下Husband类的setAge()方法即可。}

    public class Husband {  
          
        /* 
         * 对属性的封装 
         * 一个人的姓名、性别、年龄、妻子都是这个人的私有属性 
         */  
        private String name ;  
        private String sex ;  
        private String age ;    /* 改成 String类型的*/  
        private Wife wife;  
          
        public String getAge() {  
            return age;  
        }  
          
        public void setAge(int age) {  
            //转换即可  
            this.age = String.valueOf(age);  
        } 
    

      

    也许你是因为粗心写成了,你发现了还好,如果没有发现那就麻烦大了,逼近谁见过300岁的老妖怪啊!

    但是使用封装我们就可以避免这个问题,我们对age的访问入口做一些控制(setter)如:

    public void setAge(int age) {  
            if(age > 120){  
                System.out.println("ERROR:error age input....");    //提示錯誤信息  
            }else{  
                this.age = age;  
            }  
              
        }  
    

      

  • 相关阅读:
    java 查看 class文件编译时使用的编译器版本
    eclipse新建maven工程(web工程)
    U盘插入后电脑提示“使用驱动器F:中的光盘之前需要将其格式化”,该怎么办?(实测有用)
    随笔安装theano的那些故事(亲测有效,附安装包)
    Python学习4Python的交互
    Mysql热备份总结
    php中date()函数的使用
    在linux中用C语言实现ping命令的部分功能
    【转】/etc/sysconfig/目录详解
    python学习(一)
  • 原文地址:https://www.cnblogs.com/alamZ/p/7681985.html
Copyright © 2011-2022 走看看