zoukankan      html  css  js  c++  java
  • 1.java面向对象编程三大特性之封装

    封装即把一个对象的属性、行为等放在一个实体类中隐藏起来,不允许外部对其进行修改,但是被封装的属性、行为会对外提供一个接口与外部联系,这个对外的接口通常情况下就是set()get()方法。可以通过set()方法给属性设置值且可以在set()方法内部加入特定过滤条件,通过get()方法获取属性的值。

    使用封装的三大好处:

    (1).良好的封装能够减少耦合;

    (2).可以对类的内部进行自由修改且不会对其他对象产生影响;

    (3).隐藏具体信息和实现细节;

    (4).可以对成员进行精确的控制;

    代码实现:

    (1).提供对外访问的方法:

    public class Husband {
        
        /*
         * 对属性的封装
         * 一个人的姓名、性别、年龄、妻子都是这个人的私有属性
         */
        private String name ;
        private String sex ;
        private int age ;
        private Wife wife;
        
        /*
         * setter()、getter()是该对象对外开发的接口
         */
        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 int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public void setWife(Wife wife) {
            this.wife = wife;
        }
    }

    (2).不提供对外访问的方法
    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;
        }
        
    }
    (3).对set()这个访问入口做一些控制:
    public class Husband {
        
        /*
         * 对属性的封装
         * 一个人的姓名、性别、年龄、妻子都是这个人的私有属性
         */
        private String name ;
        private String sex ;
        private int age ;    /* 改成 String类型的*/
        private Wife wife;
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            if(age > 120){
                System.out.println("ERROR:error age input....");    //提示錯誤信息
            }else{
                this.age = age;
            }
            
        }
        
        /** 省略其他属性的setter、getter **/
        
    }
    (4).对get()出口做一些控制:
    public String getSexName() {
            if("0".equals(sex)){
                sexName = "女";
            }
            else if("1".equals(sex)){
                sexName = "男";
            }
            else{
                sexName = "人妖???";
            }
            return sexName;
        }
    以上内容均来自http://www.cnblogs.com/chenssy/博客,此博客为本人学习笔记
    http://www.cnblogs.com/haohaoge/
  • 相关阅读:
    spark-submit python egg 解决三方件依赖问题
    怎样制作一个 Python Egg
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月23日)
    2016最新住房贷款利率,首套房利率,二套房利率,公积金贷款利率--利率表
    xgboost: 速度快效果好的boosting模型
    苏州Uber优步司机奖励政策(4月22日)
    北京Uber优步司机奖励政策(4月22日)
    成都Uber优步司机奖励政策(4月22日)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月22日)
    苏州Uber优步司机奖励政策(4月21日)
  • 原文地址:https://www.cnblogs.com/haohaoge/p/6428061.html
Copyright © 2011-2022 走看看