• 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/
  • 相关阅读:
    UIKit, AppKit, 以及其他API在多线程当中的使用注意事项
    BOZJ-2590 优惠券
    P3620 [APIO/CTSC 2007] 数据备份
    矩阵乘法与快速幂
    CodeForces
    AtCoder
    CodeForces
    考试成绩和学号的(结构体)排序
    CodeForces
    Atcoder Beginner Contest 092 —— C题
  • 原文地址:https://www.cnblogs.com/haohaoge/p/6428061.html
Copyright © 2020-2023  润新知